我对[mat-dialog-close]的用法有点困惑.
所以,我有一个表格对话框.如果用户单击提交按钮,则验证表单.如果输入有效,则关闭对话框并提交表单.但是,如果输入无效,则对话框将保持打开状态并显示错误消息.为此,我想使用[mat-dialog-close],因为它在official documentation中描述,其使用如下:
<button mat-button [mat-dialog-close]="true">Yes</button>
我以为我可以传递一个布尔值,标签是否有效取决于变量的布尔值.但是,这不起作用.我试过这样的:
<button type="submit" (click)="addUser()" [mat-dialog-close]="formisvalid" mat-button>Submit</button>
我传递了变量formisvalid.除非输入无效,否则它的值为true.但是现在对话框始终关闭,无论formisvalid的值如何.
我也尝试用假替换它.我认为无论发生什么事情,对话框都会保持打开状态,但它也会一直关闭.
所以,我的问题是:我是否错误地使用了[mat-dialog-close],或者我只是做错了什么?如果使用[mat-dialog-close]指令无法实现这一点,那么实现我想要做的事情的另一种方法是什么?
解决方法
如果表单无效,请将按钮设置为禁用.这样,除非表单有效,否则无法单击该按钮,这意味着除非表单有效,否则不会关闭该按钮
<button type="submit" (click)="addUser()" mat-dialog-close [disabled]="formisvalid" mat-button>Submit</button>