MatDialog Angular打开组件?

时间:2019-09-18 09:27:27

标签: angular angular8

有对话框: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>;

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

为什么在示例中我们使用MyDialogComponent而不是新的MyDialogComponent()?如果MyDialogComponent在构造函数中具有依赖项注入怎么办?

1 个答案:

答案 0 :(得分:2)

对象对话框将动态创建该对象,并且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();
  }

}

demo ??