Angular 角度材质:提交父窗体时,所需的mat输入字段不显示错误

Angular 角度材质:提交父窗体时,所需的mat输入字段不显示错误,angular,angular-material2,Angular,Angular Material2,为了代码重用和在我的web应用程序中保持一致的功能,我在我的应用程序中创建了一个输入组件,其角色是在父窗体中嵌入mat输入 当mat输入是必填字段时,组件会在父窗体中正确显示该字段,当用户与该字段交互但未输入任何内容时,会显示错误。但是,在没有用户与嵌入字段进行任何交互的情况下提交父表单时,不会显示任何错误。请参见下面的StackBlitz url: 我已经在Angular Material(见:)上发布了上述内容,但也许我遗漏了一些东西 我错过什么了吗?是否有变通方法?以下变通方法由发布于。

为了代码重用和在我的web应用程序中保持一致的功能,我在我的应用程序中创建了一个输入组件,其角色是在父窗体中嵌入mat输入

当mat输入是必填字段时,组件会在父窗体中正确显示该字段,当用户与该字段交互但未输入任何内容时,会显示错误。但是,在没有用户与嵌入字段进行任何交互的情况下提交父表单时,不会显示任何错误。请参见下面的StackBlitz url:

我已经在Angular Material(见:)上发布了上述内容,但也许我遗漏了一些东西


我错过什么了吗?是否有变通方法?

以下变通方法由发布于。代码循环遍历表单的所有控件,并将它们标记为已触摸

private setFormGroupTouched(formGroup: FormGroup) {
    Object.keys(this.formGroup.controls).forEach(field => {
      const control = this.formGroup.get(field);
      control.markAsTouched({ onlySelf: true });
    });
  }
在窗体上使用
markAllAsTouched()
方法将控件及其所有子控件标记为已触摸

private setFormGroupTouched(formGroup: FormGroup) {
    Object.keys(this.formGroup.controls).forEach(field => {
      const control = this.formGroup.get(field);
      control.markAsTouched({ onlySelf: true });
    });
  }