问题:
当从错误处理程序中启动logout()方法并且用户进入“登录”页面时,字段始终无效(基于'required'属性)。
假设从常规的注销按钮启动了logout()方法-没有问题,并且在将一些值输入到输入字段后-它们将有效。
带有方法的错误处理程序:
handleError(error: any): void {
const authService = this.injector.get(AuthenticationService);
switch (error.status) {
case 403:
if(authService.isLoggedIn()){
alert('Your session has expired!');
authService.logout();
}
break;
default:
alert('Error Handler:\n\nError has occur. Status=' + error.status +
'\n\nError has occur. Stack=' + error.stack);
}
}
logout()方法:
logout(): void {
console.log('>> logout()');
// clear token remove user from local storage to log user out
localStorage.removeItem('token');
this.router.navigate(['login']);
}
以下是“登录”组件的摘录:
<mat-card class="login">
<input required [(ngModel)]="model.email" name="username" placeholder="Username" (input)="test()">
<input type="password" required [(ngModel)]="model.password" name="password" placeholder="Password" (input)="test()">
<button type="submit" class="btn btn-success" [disabled]="!loginForm.form.valid">Login
</button>
</mat-card>