[英]use component without MatDialog, MatDialogRef<SomeComponent>
我有一个函数,用一个名为'NoteFormComponent'的组件打开MatDialog,看起来像这样
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注入器构造函数。
是否有解决或解决此问题的方法?
在构造器中注入MatDialogRef时,请使用@Optional()
装饰器( 参考 ):
constructor(
...
@Optional() private dialogRef: MatDialogRef<NoteFormComponent>,
...
) { ... }
通过这样做,你可以消耗NoteFormComponent
以正常的方式,不使用MatDialog。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.