Angular 只有在改变对话的形式后才能调用对话

Angular 只有在改变对话的形式后才能调用对话,angular,angular-material,Angular,Angular Material,我有一个名为addcustomer的组件,单击名为add的按钮后,我会在对话框窗口中显示该组件,如下图所示 在add customer(添加客户)中有两个按钮1 Save(保存)和2 cancel(取消)。单击cancel(取消),我将在另一个对话框窗口中调用名为delete(删除)的组件,如下图所示 此方案对运行良好,但我想在对话窗口中调用此删除组件,前提是我在“添加客户”组件中的注册表i中做了任何更改。我如何为此编写条件?? 这是AddCustomerComponent中的链接,在openD

我有一个名为addcustomer的组件,单击名为add的按钮后,我会在对话框窗口中显示该组件,如下图所示

在add customer(添加客户)中有两个按钮1 Save(保存)和2 cancel(取消)。单击cancel(取消),我将在另一个对话框窗口中调用名为delete(删除)的组件,如下图所示

此方案对运行良好,但我想在对话窗口中调用此删除组件,前提是我在“添加客户”组件中的注册表i中做了任何更改。我如何为此编写条件?? 这是AddCustomerComponent中的链接,在openDialog方法中,检查表单是否脏,并仅在这种情况下打开模型。如果addCusForm不是脏的,您可以简单地调用对话框上的closeAll方法,以便直接关闭模式:

openDialog(): void {
  if (this.addCusForm.dirty) {
    const dialogRef = this.dialog.open(DeleteComponent, {
      width: '340px',
    });
  } else {
    this.dialog.closeAll();
  }
}

这里有一个供您参考的示例。

尝试检查表单中的原始或脏属性

像这样

<form (ngSubmit)="onSubmit()" #myForm="ngForm">

那些是被动的还是模板驱动的表单?你可能想考虑为这个实现路由,然后在用户离开这个表单时使用CANDebug保护。在Guard中,您可以检查表单是否脏,然后在此基础上显示delete模式。理想情况下,您应该能够在openDialog方法中执行相同的操作@ritajWell,在反应形式中,你有一种叫做“脏”的东西。您可以通过检查form.dirty的条件来检查表单是否已更改。@Prashanth与此类似,此操作正常,但如果我没有做任何更改,我想单击“取消”按钮关闭“添加客户”组件。我该怎么做?是的,我已经更新了同样的答案。请查收
myForm.form.pristine