Tôi đang làm việc trên một biểu mẫu đăng nhập và nếu người dùng nhập thông tin không hợp lệ, chúng tôi muốn đánh dấu cả hai trường email và mật khẩu là không hợp lệ và hiển thị thông báo cho biết đăng nhập thất bại. Làm cách nào để cài đặt các trường này không hợp lệ từ một cuộc gọi lại có thể quan sát được?
Bản mẫu:
<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>
Phương thức đăng nhập:
@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;
});
}
Ngoài việc đặt cờ đầu vào không hợp lệ thành đúng, tôi đã thử đặt email.valid
cờ thành sai và cũng đặt loginForm.invalid
thành đúng. Không ai trong số này làm cho các đầu vào hiển thị trạng thái không hợp lệ của họ.
setErros
phương pháp. Mẹo: Bạn nên thêm trình xác nhận bắt buộc vào tệp thành phần của mình. Ngoài ra có một lý do cụ thể để sử dụng ngModel với các hình thức phản ứng?