有两个相互之间传输数据的组件。如果仅关闭子对话框而不选择数据,则会发生此错误:
无法读取未定义的属性'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();
}
如果我只关闭窗口而不选择数据,该如何解决此错误?
答案 0 :(得分:0)
据我所知:您从contractors
订阅中获得了afterClose
,但是您的close
没有返回任何内容:
close() {
this.dialogRef.close(this.contractors);
}
可能是您的解决方案(假设在此组件中定义了contractors
)
答案 1 :(得分:0)
关闭对话框时,您不会向close
函数传递任何内容,因此contractors
块中的undefined
值将为dialogRef.afterClosed().subscribe
。
您可以添加一个简单的if
语句来防止此错误。如果现在关闭对话框但不传递任何内容,则该表单将不会更新,因为contractors
为undefined
。
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)
}
}
);