我正在使用AngularMaterial2的对话框。
我想将数据传递给打开的组件。以下是单击按钮打开对话框的方式
let dialogRef = this.dialog.open(DialogComponent, {
disableClose: true,
data :{'name':'Sunil'}
});
在文档页面上有数据属性,但我在已安装的软件包中检查了MdDialogConfig。
/**
* Configuration for opening a modal dialog with the MdDialog service.
*/
export declare class MdDialogConfig {
viewContainerRef?: ViewContainerRef;
/** The ARIA role of the dialog element. */
role?: DialogRole;
/** Whether the user can use escape or clicking outside to close a modal. */
disableClose?: boolean;
/** Width of the dialog. */
width?: string;
/** Height of the dialog. */
height?: string;
/** Position overrides. */
position?: DialogPosition;
}
配置类中没有数据属性。
现在我如何通过数据的访问?
我想我应该给我们这些仍在学习的人一个更完整的答案:
与材质示例不同,我将对话框配置为具有自己的组件文件(html,css和ts),以便于调试。
主要组件文件“x.component.ts”(调用
1)添加导入语句
import { MatDialog} from '@angular/material';
2)将属性添加到构造函数参数
public dialog: MatDialog
3)定义的代码调用对话框
openDialog(title: string, text: string): void {
const dialogRef = this.dialog.open(DialogComponent, {
width: '350px',
data: {dialogTitle: title, dialogText: text}
);
dialogRef.afterClosed().subscribe(result => {
});
const dialogSubmitSubscription =
dialogRef.componentInstance.submitClicked.subscribe(result => {
dialogSubmitSubscription.unsubscribe();
});
}
调用该函数与openDia从html文件
import { DialogComponent } from './dialog/dialog.component';
也
entryComponents: [DialogComponent]
在entryComponents数组中声明它
4)在你dialog.component.ts文件,添加资源
import { Component, Output, EventEmitter, Inject, OnInit} from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
5) 定义属性
dialogTitle: string;
dialogText: string;
@Output() submitClicked = new EventEmitter<any>();
constructor(
public dialogRef: MatDialogRef<DialogComponent>,
@Inject(MAT_DIALOG_DATA) public data: DialogData) {}
ngOnInit() {
this.dialogTitle = this.data.dialogTitle;
this.dialogText = this.data.dialogText;
}
saveMessage() {
const data = 'Your data';
this.submitClicked.emit(data);
this.dialogRef.close();
}
closeDialog() {
this.dialogRef.close();
}
6)最后的HTML
<h1 mat-dialog-title>{{dialogTitle}}"</h1>
<div mat-dialog-content>
<p>{{dialogText}}</p>
</div>
<div mat-dialog-actions>
<button mat-button (click)="saveMessage()" >Ok</button>
<button mat-button (click)="closeDialog()" cdkFocusInitial>No Thanks</button>
</div>
我希望它有帮助。
这答案是相当过时。看看epi
<罢工>
您可以使用<代码> dialogRef.componentInstance.myPr
你需要这样的:
let dialogRef = this.dialog.open(DialogComponent, {
disableClose: true,
});
dialogRef.componentInstance.name = 'Sunil';
然后,在对话框组件
中,需要添加名称属性
:
...
@Component({
...
})
export class DialogComponent {
public name: string;
...
}
<罢工>
<罢工>我没有找到任何文档
我成功定位了< code>dialogRef中的数据。_ container instance . dialog config . data ;
所以你能做的是,举个例子
let name = dialogRef._containerInstance.dialogConfig.data.name;
console.log(name); // Sunil
<罢工>
对于dialog的最新版本(这是Angular 5之前的版本,对于Angular 5,请参见下面的更新),您可以执行以下操作来通过更简单、更清晰的配置传递数据。
当您打开对话框时,可以通过将数据添加为配置参数来完成此操作(为了便于说明,只需忽略其中的宽度和高度):
this.dialogRef = this.dialog.open(someComponent, {
width: '330px',
height: '400px',
data: {
dataKey: yourData
}
});
然后,在对话框中打开的组件中,您可以通过以下方式访问它:
import {MD_DIALOG_DATA} from '@angular/material';
import { Inject } from '@angular/core';
constructor(
@Inject(MD_DIALOG_DATA) public data: any
) { }
ngOnInit() {
// will log the entire data object
console.log(this.data)
}
或者你可以使用模板或其他访问它
更新5角
材质中的所有内容都已从Md更改为Mat,因此如果启用Angular 5,则导入如下内容:
import {MAT_DIALOG_DATA} from '@angular/material'
然后注射像
@Inject(MAT_DIALOG_DATA) public data: any
Angular 9的更新
MAT_DIALOG_DATA导入位置已更改为:
import {MAT_DIALOG_DATA} from '@angular/material/dialog';
问题内容: 我想将一些数据传递给$ mdDialog。实际上,我在一个单独的文件中有两个控制器。这是我的控制器代码 我想tp将profileId传递给profileController并显示配置文件数据。在配置文件控制器中,我以此获取数据 但是这个错误出现在控制台中 这是什么错误以及如何解决? 问题答案: 我添加了配置文件模板,这是由于错误。通过删除它,我的问题解决了。
如何将数据从活动传递到对话框? 有关更多详细信息,请参阅下图:
问题内容: 我正在开发一个网站,在该网站上,我在一个表中列出了来自数据库查询的一些预订,并带有来取消特定行上的预订,例如: 我的预订 最好的是,如果我可以使用弹出一条消息,询问用户是否确定要取消预订。我一直在尝试使其工作,但我一直坚持如何创建一个接受参数的jQuery函数,以便我可以替换 与 。 然后,该函数将打开对话框,并将参数10传递给对话框,以便如果用户单击“是”,它将发布href: 我已经
我正在研究这个angular2项目,其中我使用从一个组件导航到另一个组件。 有两个组件。i、 例如, 我想从PagesComponent导航到DesignerComponent。 到目前为止其路由正确但我需要通过 我尝试使用RouteParams,但它的获取页面对象。 下面是我的代码: 页面.组件. ts 在html中,我正在执行以下操作: 在 DesignerComponent 构造函数中,我完
> 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?
我有一组材质设计复选框,我想将它们的值绑定到控制器中的数组。 为了实现这一点,我使用了SO答案中描述的第一种方法。当这些值被正确地添加和从列表中删除时,当我单击它们时,这些框不再显示为“选中”。我的代码在下面,我也在这个代码页中重新创建了这个问题。 我的复选框的HTML 来自控制器的JavaScript