gpt4 book ai didi

angular - 使用不带 MatDialog 的组件,MatDialogRef

转载 作者:行者123 更新时间:2023-12-02 09:07:51 24 4
gpt4 key购买 nike

我有一个函数可以打开一个带有名为“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 一起使用,我必须像这样在组件的构造函数中注入(inject)一个引用

  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 注入(inject)器。

有没有办法解决或解决这个问题?

最佳答案

在构造函数(Reference)中注入(inject) MatDialogRef 时使用 @Optional() 装饰器:

constructor(
...
@Optional() private dialogRef: MatDialogRef<NoteFormComponent>,
...
) { ... }

通过这样做,您可以以正常方式使用 NoteFormComponent,而无需使用 MatDialog。

关于angular - 使用不带 MatDialog 的组件,MatDialogRef<SomeComponent>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942202/

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