首页 > 解决方案 > MatDialog Angular开放组件?

问题描述

有对话框:public dialog: MatDialog和打开对话框的方法 open():

this.dialog.open(MyDialogComponent, conf);

描述open()是:

open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>, config?: MatDialogConfig<D>): MatDialogRef<T, R>;

这是否意味着我应该将第一个参数作为实例组件传递?

为什么在示例中我们使用MyDialogComponentnew MyDialogComponent()?如果MyDialogComponent构造函数中有依赖注入怎么办?

标签: angularangular8

解决方案


对象对话框将动态创建该对象,他的 DI 将为您注入依赖项

该组件作为示例AService将由 DI 系统注入

@Component({
  selector: 'dialog-overview-example-dialog',
  templateUrl: 'dialog-overview-example-dialog.html',
  providers: [AService]
})
export class DialogOverviewExampleDialog {

  constructor(
    public dialogRef: MatDialogRef<DialogOverviewExampleDialog>,
    @Inject(MAT_DIALOG_DATA) public data: DialogData , public AService:AService ) {
      console.log(AService)
    }

  onNoClick(): void {
    this.dialogRef.close();
  }

}

演示


推荐阅读