From d959baeb60c6e5c229bbe7743920aabef6dd028b Mon Sep 17 00:00:00 2001 From: crisbeto Date: Mon, 17 Apr 2017 14:44:48 +0200 Subject: [PATCH 1/2] fix(dialog): provide default value for MD_DIALOG_DATA token Adds a default value for the `MD_DIALOG_DATA` injection token, instead of throwing an error when it's not defined. Fixes #4086. --- src/lib/dialog/dialog-config.ts | 2 +- src/lib/dialog/dialog-injector.ts | 2 +- src/lib/dialog/dialog.spec.ts | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/lib/dialog/dialog-config.ts b/src/lib/dialog/dialog-config.ts index 96b4586e73d5..e72376fba7c5 100644 --- a/src/lib/dialog/dialog-config.ts +++ b/src/lib/dialog/dialog-config.ts @@ -40,7 +40,7 @@ export class MdDialogConfig { position?: DialogPosition; /** Data being injected into the child component. */ - data?: any; + data?: any = {}; // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling. } diff --git a/src/lib/dialog/dialog-injector.ts b/src/lib/dialog/dialog-injector.ts index 87f0d7ffdc91..c6edc4e1b471 100644 --- a/src/lib/dialog/dialog-injector.ts +++ b/src/lib/dialog/dialog-injector.ts @@ -15,7 +15,7 @@ export class DialogInjector implements Injector { return this._dialogRef; } - if (token === MD_DIALOG_DATA && this._data) { + if (token === MD_DIALOG_DATA) { return this._data; } diff --git a/src/lib/dialog/dialog.spec.ts b/src/lib/dialog/dialog.spec.ts index d9833fe3b53f..de11fe3e0eb2 100644 --- a/src/lib/dialog/dialog.spec.ts +++ b/src/lib/dialog/dialog.spec.ts @@ -371,10 +371,11 @@ describe('MdDialog', () => { expect(instance.data.dateParam).toBe(config.data.dateParam); }); - it('should throw if injected data is expected but none is passed', () => { - expect(() => { - dialog.open(DialogWithInjectedData); - }).toThrow(); + it('should default to an empty object if no data is passed', () => { + let dialogRef: MdDialogRef; + + expect(() => dialogRef = dialog.open(DialogWithInjectedData)).not.toThrow(); + expect(dialogRef.componentInstance.data).toEqual({}); }); }); From ef70c44cf48eab0e6096c54204938820b9e3bc7e Mon Sep 17 00:00:00 2001 From: crisbeto Date: Mon, 17 Apr 2017 19:32:43 +0200 Subject: [PATCH 2/2] chore: switch default value to null --- src/lib/dialog/dialog-config.ts | 2 +- src/lib/dialog/dialog.spec.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/dialog/dialog-config.ts b/src/lib/dialog/dialog-config.ts index e72376fba7c5..f8f1b648a3e3 100644 --- a/src/lib/dialog/dialog-config.ts +++ b/src/lib/dialog/dialog-config.ts @@ -40,7 +40,7 @@ export class MdDialogConfig { position?: DialogPosition; /** Data being injected into the child component. */ - data?: any = {}; + data?: any = null; // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling. } diff --git a/src/lib/dialog/dialog.spec.ts b/src/lib/dialog/dialog.spec.ts index de11fe3e0eb2..ca88d4dfda8f 100644 --- a/src/lib/dialog/dialog.spec.ts +++ b/src/lib/dialog/dialog.spec.ts @@ -371,11 +371,11 @@ describe('MdDialog', () => { expect(instance.data.dateParam).toBe(config.data.dateParam); }); - it('should default to an empty object if no data is passed', () => { + it('should default to null if no data is passed', () => { let dialogRef: MdDialogRef; expect(() => dialogRef = dialog.open(DialogWithInjectedData)).not.toThrow(); - expect(dialogRef.componentInstance.data).toEqual({}); + expect(dialogRef.componentInstance.data).toBeNull(); }); });