我在这里检查了几篇文章,并再次检查了如何将数据从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。任何帮助表示赞赏。
答案 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);
希望我能对您有所帮助
致谢