关闭对话框时如何摆脱未定义的错误?

时间:2019-07-17 09:17:19

标签: angular angular-material

有两个相互之间传输数据的组件。如果仅关闭子对话框而不选择数据,则会发生此错误:

  

无法读取未定义的属性'contractor_id'

父组件:

...
dialogRef.afterClosed().subscribe(
  contractors => {
    this.form.get('SPR_CONTRACTORS_ID').patchValue(contractors.contractor_id)
    this.form.get('CONTRACTOR_NAME').patchValue(contractors.contractor_name)
  }
);
...

子组件关闭:

  close() {
    this.dialogRef.close();
  }

如果我只关闭窗口而不选择数据,该如何解决此错误?

2 个答案:

答案 0 :(得分:0)

据我所知:您从contractors订阅中获得了afterClose,但是您的close没有返回任何内容:

  close() {
    this.dialogRef.close(this.contractors);
  }

可能是您的解决方案(假设在此组件中定义了contractors

答案 1 :(得分:0)

关闭对话框时,您不会向close函数传递任何内容,因此contractors块中的undefined值将为dialogRef.afterClosed().subscribe

您可以添加一个简单的if语句来防止此错误。如果现在关闭对话框但不传递任何内容,则该表单将不会更新,因为contractorsundefined

 dialogRef.afterClosed().subscribe(
  contractors => {
    if (contractors) {
      this.form.get('SPR_CONTRACTORS_ID').patchValue(contractors.contractor_id)
      this.form.get('CONTRACTOR_NAME').patchValue(contractors.contractor_name)      
    }
  }
);
相关问题