簡體   English   中英

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

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

我使用一個組件作為通過路由到達的常規組件,但是當它注入組件時,我還希望它也將其用作模態對話框的“目標”:

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}
 });

激活開啟器時我可以工作,但是如果我嘗試使用常規路線到達同一組件,則會得到:

錯誤:未捕獲(承諾):NullInjectorError:StaticInjectorError(AppModule)[Component1-> MatDialogRef]:StaticInjectorError(平台:core)[Component1-> MatDialogRef]:NullInjectorError:沒有MatDialogRef的提供者!

如何調整該組件使其在兩種模式下均可工作?

我在組件中找到了可選注入參數的解決方案:我在構造函數參數之前添加了@Optional()裝飾器(僅在注冊了提供程序的情況下才應注入)。

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

我在這里找到了解決方案: 帶可選參數的DI構造函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM