gpt4 book ai didi

angular - 在 Material 对话框中重用现有的 Angular 组件

转载 作者:行者123 更新时间:2023-12-03 23:21:18 27 4
gpt4 key购买 nike

我有一个现有组件 ResultGridComponent@Input() 传递的数据.我想对 MatDialog 使用相同的组件.
因此我添加了@Inject(MAT_DIALOG_DATA) dataResultGridComponent 的构造函数中零件。

constructor(private spinner: EdpLoaderService, private dialog: MatDialog, @Optional() @Inject(MAT_DIALOG_DATA) data) {}

但是,当按照不是对话框的常规用法调用组件时,我收到以下错误:

ERROR Error: StaticInjectorError(AppModule)[ResultGridComponent -> InjectionToken MatDialogData]: StaticInjectorError(Platform: core)[ResultGridComponent -> InjectionToken MatDialogData]: NullInjectorError: No provider for InjectionToken MatDialogData!



我很确定我已经导入了所有需要的模块。因为我为对话框创建了一个单独的组件并将数据传递给它并且它工作正常。但我想重用该组件。而且我很确定当我将子组件的构造函数调用为常规组件并且构造函数没有得到 MatDialogData 时,会出现这个错误。由调用者传递给它。

最佳答案

在某些情况下,我会在@Inject(MAT_DIALOG_DATA) 之前使用@Optional()。

  constructor(
@Optional() @Inject(MAT_DIALOG_DATA) dialogData: any
) {
if (dialogData) {
// here pass dialog data to the child component
}
}

关于angular - 在 Material 对话框中重用现有的 Angular 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55081068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com