在Angular材料中有条件地打开模态

时间:2018-07-11 05:43:02

标签: angular angular-material

我正在使用Angular Material对话框打开模态。在打开的模式中,我很少有组件,每次都根据条件加载不同的组件。问题是,我试图将组件名称作为字符串传递给.open()方法,但它给出了错误。

例如,让我们说这种方法:

openDialog(): void {
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
  width: '250px',
});

我试图做类似的事情:

let myComp: string = 'DialogOverviewExampleDialog'; 

openDialog(): void {
  const dialogRef = this.dialog.open(this.myComp, {
  width: '250px',
});

但是它给出了错误。只是没有将变量作为函数的参数。

我需要将名称作为字符串传递的原因,因此我可以创建一个条件,为每个条件分配应在模式中打开的组件,然后只需将.open()方法与要加载的期望组件的名称

怎么了?

谢谢。

2 个答案:

答案 0 :(得分:2)

DialogOverviewExampleDialog是一个类。因此,将您的代码修改为

let myComp: any = DialogOverviewExampleDialog; 

openDialog(): void {
  const dialogRef = this.dialog.open(this.myComp, {
  width: '250px',
});

答案 1 :(得分:0)

尝试一下:

let myComp : DialogOverviewExampleDialog