Skip to content

Commit 6ec0af1

Browse files
crisbetojelbourn
authored andcommitted
fix(dialog): don't provide directionality if user injector has one already (#10004)
Switches the dialog injector to provide the `Directionality` only when the user-provided injector doesn't have one already. Relates to #9996.
1 parent 9a39e24 commit 6ec0af1

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

src/cdk-experimental/dialog/dialog.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -264,13 +264,17 @@ export class Dialog {
264264
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
265265
const injectionTokens = new WeakMap();
266266

267-
injectionTokens.set(this.injector.get(DIALOG_REF), dialogRef);
268-
injectionTokens.set(this.injector.get(DIALOG_CONTAINER), dialogContainer);
269-
injectionTokens.set(DIALOG_DATA, config.data);
270-
injectionTokens.set(Directionality, {
271-
value: config.direction,
272-
change: observableOf()
273-
});
267+
injectionTokens
268+
.set(this.injector.get(DIALOG_REF), dialogRef)
269+
.set(this.injector.get(DIALOG_CONTAINER), dialogContainer)
270+
.set(DIALOG_DATA, config.data);
271+
272+
if (!userInjector || !userInjector.get(Directionality, null)) {
273+
injectionTokens.set(Directionality, {
274+
value: config.direction,
275+
change: observableOf()
276+
});
277+
}
274278

275279
return new PortalInjector(userInjector || this.injector, injectionTokens);
276280
}

src/lib/dialog/dialog.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -269,17 +269,21 @@ export class MatDialog {
269269
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
270270
const injectionTokens = new WeakMap();
271271

272-
injectionTokens.set(MatDialogRef, dialogRef);
273272
// The MatDialogContainer is injected in the portal as the MatDialogContainer and the dialog's
274273
// content are created out of the same ViewContainerRef and as such, are siblings for injector
275-
// purposes. To allow the hierarchy that is expected, the MatDialogContainer is explicitly
274+
// purposes. To allow the hierarchy that is expected, the MatDialogContainer is explicitly
276275
// added to the injection tokens.
277-
injectionTokens.set(MatDialogContainer, dialogContainer);
278-
injectionTokens.set(MAT_DIALOG_DATA, config.data);
279-
injectionTokens.set(Directionality, {
280-
value: config.direction,
281-
change: observableOf()
282-
});
276+
injectionTokens
277+
.set(MatDialogContainer, dialogContainer)
278+
.set(MAT_DIALOG_DATA, config.data)
279+
.set(MatDialogRef, dialogRef);
280+
281+
if (!userInjector || !userInjector.get(Directionality, null)) {
282+
injectionTokens.set(Directionality, {
283+
value: config.direction,
284+
change: observableOf()
285+
});
286+
}
283287

284288
return new PortalInjector(userInjector || this._injector, injectionTokens);
285289
}

0 commit comments

Comments
 (0)