gpt4 book ai didi

dialog - Angular6 Material Dialog 在按回车键时阻止关闭

转载 作者:行者123 更新时间:2023-12-05 08:16:18 28 4
gpt4 key购买 nike

我有一个登录对话框,想防止它在按下回车键时自动关闭。

更具体地说,当用户输入凭据并按下回车键时,凭据的响应返回错误,我希望对话框保留(这样我就可以向他们显示一些错误消息,让用户再试一次) .

这就是我所做的:

export class LoginComponent {
constructor(public dialogRef: MatDialogRef<LoginComponent>) { }

onSubmit(): void {
this.authService.login(...)
.subscribe(res => {
...
},
error => {
this.dialogRef.disableClose = true;
}
}
}

this.dialogRef.disableClose = true; 仍然关闭对话框,即使返回的响应是错误的。

我应该怎么做?

编辑

登录.component.ts

<mat-toolbar>
<span>Login</span>
</mat-toolbar>
<mat-card class="my-card">
<div *ngIf="error" style="color: red;">{{error}}</div><br />
<form (ngSubmit)="onSubmit()" [formGroup]="loginForm">
<mat-card-content>
<mat-form-field appearance="outline" class="full-width">
<mat-label>Email</mat-label>
<input matInput placeholder="Email"
formControlName="email"
[formControl]="emailFormControl"
[errorStateMatcher]="matcher" />
<mat-error *ngIf="emailFormControl.hasError('email') && !emailFormControl.hasError('required')">
Enter valid email address
</mat-error>
<mat-error *ngIf="emailFormControl.hasError('required')">
Required field
</mat-error>
</mat-form-field>
<mat-form-field appearance="outline" class="full-width">
<mat-label>Password</mat-label>
<input matInput type="password"
placeholder="Password"
formControlName="password"
[formControl]="passwordFormControl"
[errorStateMatcher]="matcher" />
<mat-error *ngIf="passwordFormControl.hasError('required')">
Required field
</mat-error>
</mat-form-field>
</mat-card-content>
<mat-card-actions>
<button mat-raised-button (click)="onNoClick()" color="primary">Close</button>
<button mat-raised-button
[disabled]="!(loginForm.controls.email.valid && loginForm.controls.password.valid)"
color="accent">
Login
</button>
</mat-card-actions>
</form>
</mat-card>

登录.component.ts

onSubmit(): void {       
if (this.loginForm.invalid) {
return;
}
this.authService.login(this.loginForm.controls.email.value, this.loginForm.controls.password.value)
.subscribe(res => {
if (res) {
alert("logged in");
}
},
error => {
this.error = 'Error! Plese try again.';
}
);
}

最佳答案

我相信这是因为您的“关闭”按钮未设置为 type="button",并且我认为这是第一个具有焦点的元素,因此当按 enter 键时,您正在输入该按钮,默认情况下,它将提交表格。添加 type="button"应该可以解决问题。

另外记录一下,最新版本的angular material有md-button默认自动添加type="button"(除非你指定type="submit")来避免这种情况

使用这个

 <mat-card-actions>
<button mat-raised-button type="button" (click)="onNoClick()" color="primary">Close</button>
<button mat-raised-button type="submit"
[disabled]="!(loginForm.controls.email.valid && loginForm.controls.password.valid)"
color="accent">
Login
</button>
</mat-card-actions>

关于dialog - Angular6 Material Dialog 在按回车键时阻止关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868273/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com