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);
}