![](/img/trans.png)
[英]NullInjectorError: StaticInjectorError(AppModule)[Voter -> Number]:
[英]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.