Saya sedang mengerjakan formulir login dan jika pengguna memasukkan kredensial tidak valid kami ingin menandai bidang email dan kata sandi sebagai tidak valid dan menampilkan pesan yang mengatakan login gagal. Bagaimana cara menetapkan bidang ini menjadi tidak valid dari panggilan balik yang dapat diamati?
Templat:
<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>
Metode login:
@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;
});
}
Selain mengatur input flag yang tidak benar ke true Saya sudah mencoba mengatur email.valid
flag ke false, dan mengatur loginForm.invalid
ke true juga. Tidak satu pun dari ini menyebabkan input untuk menampilkan keadaan tidak valid mereka.
setErros
metode. Tips: Anda harus menambahkan validator yang diperlukan pada file komponen Anda. Juga adakah alasan khusus untuk menggunakan ngModel dengan bentuk reaktif?