我有一个函数可以打开MatDialog并带有一个名为'NoteFormComponent'的组件
openForm() {
let dialogConfig = new MatDialogConfig();
dialogConfig.autoFocus = true;
dialogConfig.width = "95%";
dialogConfig.panelClass = "form-dialog";
dialogConfig.scrollStrategy = new NoopScrollStrategy();
this.dialog.open(NoteFormComponent, dialogConfig).beforeClose().subscribe(() => this.getNotes());
}
我弹出一个包含“ NoteFormComponent”的模式。 那是什么问题?
问题是我想在没有MatDialog的情况下使用'NoteFormComponent',但是为了将其与MatDialog一起使用,我必须像这样在组件的构造函数中注入引用
constructor(
private noteService : NoteService,
private productService : ProductService,
private categoryService : CategoryService,
private clientService : ClientService,
private notification : NotificationService,
private dialogRef : MatDialogRef<NoteFormComponent>, /*This Reference*/
private loader : LoaderService,
private sessionService : SessionService,
private securityBlockerService : SecurityBlockerService,
private dialog : MatDialog,
private dialogService : DialogService
) { }
如果我尝试将组件与模板选择器''一起使用,则会引发错误,提示没有提供MatDialogRef的提供程序,我唯一想到的就是创建该组件的副本。 'NoteFormComponent',但构造函数中没有MatDialogRef注入器。
反正有解决或解决此问题的方法吗?
答案 0 :(得分:2)
在构造器(Reference)中注入MatDialogRef时,请使用@Optional()
装饰器:
constructor(
...
@Optional() private dialogRef: MatDialogRef<NoteFormComponent>,
...
) { ... }
这样做,您可以以正常方式使用NoteFormComponent
,而无需使用MatDialog。