angular - 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>;
这是否意味着我应该将第一个参数作为实例组件传递?
为什么在示例中我们使用MyDialogComponent
new MyDialogComponent()
?如果MyDialogComponent
构造函数中有依赖注入怎么办?
解决方案
对象对话框将动态创建该对象,他的 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();
}
}