From 29cbe61296610648d5c44d705d3b00a2d4b2efde Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 6 Feb 2017 23:57:59 +0100 Subject: [PATCH] feat(dialog): add a config option for passing in data (#2266) * feat(dialog): add a config option for passing in data Adds the ability to pass in data to a dialog via the `data` property. While this was previously possible through the `dialogRef.componentInstance.someUserSuppliedProperty`, it wasn't the most intuitive. The new approach looks like this: ``` dialog.open(SomeDialog, { data: { hello: 'world' } }); class SometDialog { constructor(data: MdDialogData) { console.log(data['hello']); } } ``` Fixes #2181. * Switch to using an OpaqueToken. * chore: fix aot errors --- src/demo-app/dialog/dialog-demo.html | 10 +++++- src/demo-app/dialog/dialog-demo.ts | 18 +++++++---- src/lib/dialog/dialog-config.ts | 4 ++- src/lib/dialog/dialog-injector.ts | 12 +++++-- src/lib/dialog/dialog.spec.ts | 48 ++++++++++++++++++++++++++-- src/lib/dialog/dialog.ts | 4 +-- src/lib/dialog/index.ts | 1 + 7 files changed, 81 insertions(+), 16 deletions(-) diff --git a/src/demo-app/dialog/dialog-demo.html b/src/demo-app/dialog/dialog-demo.html index 53734bbbfdff..0391728e7cca 100644 --- a/src/demo-app/dialog/dialog-demo.html +++ b/src/demo-app/dialog/dialog-demo.html @@ -46,7 +46,15 @@

Other options

- Disable close +

+ + + +

+ +

+ Disable close +

diff --git a/src/demo-app/dialog/dialog-demo.ts b/src/demo-app/dialog/dialog-demo.ts index 5e91c097f9aa..3c4475487502 100644 --- a/src/demo-app/dialog/dialog-demo.ts +++ b/src/demo-app/dialog/dialog-demo.ts @@ -1,6 +1,7 @@ import {Component, Inject} from '@angular/core'; import {DOCUMENT} from '@angular/platform-browser'; -import {MdDialog, MdDialogRef, MdDialogConfig} from '@angular/material'; +import {MdDialog, MdDialogRef, MdDialogConfig, MD_DIALOG_DATA} from '@angular/material'; + @Component({ moduleId: module.id, @@ -21,6 +22,9 @@ export class DialogDemo { bottom: '', left: '', right: '' + }, + data: { + message: 'Jazzy jazz jazz' } }; @@ -41,7 +45,7 @@ export class DialogDemo { openJazz() { this.dialogRef = this.dialog.open(JazzDialog, this.config); - this.dialogRef.afterClosed().subscribe(result => { + this.dialogRef.afterClosed().subscribe((result: string) => { this.lastCloseResult = result; this.dialogRef = null; }); @@ -59,13 +63,13 @@ export class DialogDemo { template: `

It's Jazz!

-

{{ jazzMessage }}

+

{{ data.message }}

` }) export class JazzDialog { - jazzMessage = 'Jazzy jazz jazz'; - - constructor(public dialogRef: MdDialogRef) { } + constructor( + public dialogRef: MdDialogRef, + @Inject(MD_DIALOG_DATA) public data: any) { } } @@ -104,7 +108,7 @@ export class JazzDialog { color="primary" href="https://en.wikipedia.org/wiki/Neptune" target="_blank">Read more on Wikipedia - +