为什么使用 MAT_DIALOG_DATA 将数据传递到角度材质对话框

rob*_*ing 3 angular-material angular

在他们使用的文档中MAT_DIALOG_DATA在他们用来与组件共享数据的

但是,为什么不直接去ref.componentInstance.myInput = my_value 将数据传递给组件与设置组件实例输入之间有什么区别?我还没有发现直接在组件上设置值的任何限制。

umi*_*der 5

使用时MAT_DIALOG_DATA,数据在组件的构造函数中可用,并且可用于类字段的正确初始化。

通过调用其构造函数创建组件后,Angular 会在特定时刻调用其生命周期钩子方法(即)。ngOnInit

MatDialog.open即使在 Angular 调用其组件的任何生命周期钩子之前,也会返回对新打开的对话框的引用。如果您在调用后立即使用该引用传递数据MatDialog.open,则与使用 提供数据相比没有其他区别MAT_DIALOG_DATA。然而,如果在打开对话框和设置数据之间涉及异步处理,则结果是不可预测的,因为当组件数据尚不可用时可能会调用生命周期钩子方法。