Angular [mat-dialog-close]="false" 不起作用

Angular [mat-dialog-close]="false" does not work

如果 [mat-dialog-close] 的值为 false,为什么 [mat-dialog-close]="createFurtherCheckbox.checked ? 'false' : 'true'" 不起作用?在对话框中,我通过单击提交按钮创建一个对象,如果选中某个复选框,这会询问我是否要创建另一个对象,对话框不会关闭,因此我可以创建另一个对象(在本例中为课程) .如果复选框已选中,我希望对话框重置并保持打开状态。

即使我尝试 [mat-dialog-close]="false" 对话框也会关闭。

但是 [type]="createAnotherCheckbox.checked ? 'reset' : 'button'" 'reset' 类型是否正确更改。 (用于重置表单中的表单控件)

创建课程-dialog.component.html

<mat-dialog-actions>
    <mat-checkbox #createFurtherCheckbox>Create another course?</mat-checkbox>
    <button mat-raised-button [mat-dialog-close]="createFurtherCheckbox.checked ? 'false' : 'true'" [type]="createFurtherCheckbox.checked ? 'reset' : 'button'"
            (click)="Submit()" [disabled]="courseForm.invalid">Create course</button>
    <button mat-raised-button mat-dialog-close>Cancel</button>
</mat-dialog-actions>

我认为您误解了 mat-dialog-close directive 的输入。

@Input('mat-dialog-close')
dialogResult: any

您正在为订阅 afterClosed 时获得的结果设置 return 值 喜欢这里

dialogRef.afterClosed().subscribe(result => {
      console.log('The dialog was closed');
      this.animal = result;
    });

使用 ngif 和两个按钮的快速解决方法

<ng-container *ngIf="createAnotherCheckbox.checked">
   <button mat-raised-button type="reset" (click)="Submit()" [disabled]="courseForm.invalid">
    Create course</button>
</ng-container>
<ng-container *ngIf="!createAnotherCheckbox.checked">
   <button mat-raised-button type="button" (click)="Submit()" [disabled]="courseForm.invalid" 
    mat-dialog-close>Create course</button>
</ng-container>

好的谢谢,你是对的。 我使用两个 ng-container:

解决了我的问题
<ng-container *ngIf="createAnotherCheckbox.checked">
   <button mat-raised-button type="reset" (click)="Submit()" [disabled]="courseForm.invalid">
    Create course</button>
</ng-container>
<ng-container *ngIf="!createAnotherCheckbox.checked">
   <button mat-raised-button type="button" (click)="Submit()" [disabled]="courseForm.invalid" 
    mat-dialog-close>Create course</button>
</ng-container>