gpt4 book ai didi

angular - NullInjectorError : StaticInjectorError(AppModule)[Component-> MatDialogRef]

转载 作者:行者123 更新时间:2023-12-04 01:04:50 32 4
gpt4 key购买 nike

我正在使用一个组件作为通过路由到达的常规组件,但我希望它在使用注入(inject)组件时也将其用作模式对话框的“目标”:

export class Component1 implements OnInit {
constructor(private service: <someService>,
public dialogRef: MatDialogRef<Component1>, //These 2 lines are used as
//injection from the opener
@Inject(MAT_DIALOG_DATA) public data: any) {}

这是“开瓶器”的代码:
openComponent1aSModalPage()
{
Const dialogRef = this.dialog.open(Component1, {
width: '70%',
height: '70%',
data: {property: propertyValue}
});

我在激活开启器时工作,但如果我尝试使用常规路由到达同一个组件,我会得到:

Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[Component1 -> MatDialogRef]: StaticInjectorError(Platform: core)[Component1-> MatDialogRef]: NullInjectorError: No provider for MatDialogRef!



如何调整该组件以在两种模式下工作?

最佳答案

我找到了组件中可选注入(inject)参数的解决方案:
我在构造函数参数之前添加了 @Optional() 装饰器(只有在注册了提供程序时才应该注入(inject))。

constructor(private service: <someService>,
@Optional() public dialogRef: MatDialogRef<Component1>,
@Optional() @Inject(MAT_DIALOG_DATA) public data: any )

我在这里找到了解决方案:
DI constructor with optional parameters

关于angular - NullInjectorError : StaticInjectorError(AppModule)[Component-> MatDialogRef],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57258884/

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