角材料无法将数据对象传递给对话框对话框

时间:2019-06-11 13:09:49

标签: angular typescript

我在这里检查了几篇文章,并再次检查了如何将数据从Angular组件传递到MatDialog,但是在加载对话框时却得到了“未定义”。

到目前为止,这是我的代码

import { MatDialog } from '@angular/material';

let dialogReff = this.dialog.open(MyComponent,
        {
          panelClass: 'custom-dialog-container',
          data: { myObject: selectedObject},
          disableClose: true
        });

我在此处添加了一个断点,并验证了selectedObject包含所有字段而不是'undefined'

在我的对话框构造器中

import { Component, OnInit, AfterViewInit,  Inject, ViewChild, ElementRef } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
import { FormControl, Validators } from '@angular/forms';

    constructor(public dialogRef: MatDialogRef<InventoryRequiredInfoViewerComponent>,
        @Inject(MAT_DIALOG_DATA) public data: { myObject: any}) {

       var test = data.myObject;
    }

当我在这里休息时,data.myObject是未定义的。

我将对话框类添加到app.module.ts部分:

@NgModule({   声明:

entryComponents:

我读了几篇文章,无法弄清楚为什么数据对象没有成功传递给MatDialog。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

我认为您能够获取数据,但是您正在构造函数中对其进行重新定义。试试这个:@Inject(MAT_DIALOG_DATA) data

答案 1 :(得分:0)

您好,尝试如下修改您的代码:

    let dialogConfig = new MatDialogConfig();

    dialogConfig.disableClose = true;
    dialogConfig.autoFocus = true;
    dialogConfig.maxWidth = '400px';
    dialogConfig.panelClass = 'custom-dialog-container';
    dialogConfig.data = {
      myObject: selectedObject,
    };

 let dialogReff = this.dialog.open(MyComponent, dialogConfig);

希望我能对您有所帮助

致谢