Bir giriş formu üzerinde çalışıyorum ve kullanıcı geçersiz kimlik bilgileri girerse, hem e-posta hem de parola alanlarını geçersiz olarak işaretlemek ve oturum açma işleminin başarısız olduğunu belirten bir ileti görüntülemek istiyoruz. Bu alanları gözlemlenebilir bir geri aramadan geçersiz olacak şekilde nasıl ayarlayabilirim?
Şablon:
<form #loginForm="ngForm" (ngSubmit)="login(loginForm)" id="loginForm">
<div class="login-content" fxLayout="column" fxLayoutAlign="start stretch">
<md-input-container>
<input mdInput placeholder="Email" type="email" name="email" required [(ngModel)]="email">
</md-input-container>
<md-input-container>
<input mdInput placeholder="Password" type="password" name="password" required [(ngModel)]="password">
</md-input-container>
<p class='error' *ngIf='loginFailed'>The email address or password is invalid.</p>
<div class="extra-options" fxLayout="row" fxLayoutAlign="space-between center">
<md-checkbox class="remember-me">Remember Me</md-checkbox>
<a class="forgot-password" routerLink='/forgot-password'>Forgot Password?</a>
</div>
<button class="login-button" md-raised-button [disabled]="!loginForm.valid">SIGN IN</button>
<p class="note">Don't have an account?<br/> <a [routerLink]="['/register']">Click here to create one</a></p>
</div>
</form>
Giriş yöntemi:
@ViewChild('loginForm') loginForm: HTMLFormElement;
private login(formData: any): void {
this.authService.login(formData).subscribe(res => {
alert(`Congrats, you have logged in. We don't have anywhere to send you right now though, but congrats regardless!`);
}, error => {
this.loginFailed = true; // This displays the error message, I don't really like this, but that's another issue.
this.loginForm.controls.email.invalid = true;
this.loginForm.controls.password.invalid = true;
});
}
Girişler geçersiz bayrağı true olarak ayarlamaya ek olarak email.valid
bayrağı false olarak ayarlamayı ve loginForm.invalid
de true olarak ayarlamayı denedim . Bunların hiçbiri girişlerin geçersiz durumlarını göstermesine neden olmaz.
setErros
Yöntemi kullanabilirsiniz . İpuçları: Bileşen dosyanıza gerekli doğrulayıcıyı eklemelisiniz. Ayrıca ngModel'i reaktif formlarla kullanmanın özel bir nedeni var mı?