diff --git a/src/lib/dialog/dialog.spec.ts b/src/lib/dialog/dialog.spec.ts index 70c09652081d..bed2d2ce11da 100644 --- a/src/lib/dialog/dialog.spec.ts +++ b/src/lib/dialog/dialog.spec.ts @@ -22,6 +22,7 @@ import {By} from '@angular/platform-browser'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {Location} from '@angular/common'; import {SpyLocation} from '@angular/common/testing'; +import {Directionality} from '@angular/cdk/bidi'; import {MdDialogContainer} from './dialog-container'; import {OverlayContainer} from '@angular/cdk/overlay'; import {ESCAPE} from '@angular/cdk/keycodes'; @@ -433,6 +434,14 @@ describe('MdDialog', () => { expect(overlayPane.getAttribute('dir')).toBe('rtl'); }); + it('should inject the correct layout direction in the component instance', () => { + const dialogRef = dialog.open(PizzaMsg, { direction: 'rtl' }); + + viewContainerFixture.detectChanges(); + + expect(dialogRef.componentInstance.directionality.value).toBe('rtl'); + }); + it('should close all of the dialogs', async(() => { dialog.open(PizzaMsg); dialog.open(PizzaMsg); @@ -970,7 +979,8 @@ class ComponentWithTemplateRef { @Component({template: '

Pizza

'}) class PizzaMsg { constructor(public dialogRef: MdDialogRef, - public dialogInjector: Injector) {} + public dialogInjector: Injector, + public directionality: Directionality) {} } @Component({ diff --git a/src/lib/dialog/dialog.ts b/src/lib/dialog/dialog.ts index 86865578919c..796d4d53bcf8 100644 --- a/src/lib/dialog/dialog.ts +++ b/src/lib/dialog/dialog.ts @@ -28,12 +28,14 @@ import { TemplateRef, } from '@angular/core'; import {extendObject, PortalInjector} from '@angular/material/core'; +import {Directionality} from '@angular/cdk/bidi'; import {Observable} from 'rxjs/Observable'; import {defer} from 'rxjs/observable/defer'; import {Subject} from 'rxjs/Subject'; import {MdDialogConfig} from './dialog-config'; import {MdDialogContainer} from './dialog-container'; import {MdDialogRef} from './dialog-ref'; +import {of as observableOf} from 'rxjs/observable/of'; export const MD_DIALOG_DATA = new InjectionToken('MdDialogData'); @@ -276,6 +278,10 @@ export class MdDialog { injectionTokens.set(MdDialogRef, dialogRef); injectionTokens.set(MdDialogContainer, dialogContainer); injectionTokens.set(MD_DIALOG_DATA, config.data); + injectionTokens.set(Directionality, { + value: config.direction, + change: observableOf() + }); return new PortalInjector(userInjector || this._injector, injectionTokens); }