From eee804f9e4a66f61ed78b7617cb45289fb9ee212 Mon Sep 17 00:00:00 2001 From: crisbeto Date: Sun, 4 Nov 2018 17:21:26 +0100 Subject: [PATCH] fix(sidenav): implicit content element being registered twice with scroll dispatcher When the consumer doesn't provide a `mat-sidenav-content`, we create one implicitly for them. The implicit content element has a `cdkScrollable` on it, which means that the it'll be registered on the `ScrollDispatcher` as a `CdkScrollable`, however since `MatSidenavContent` also extends `CdkScrollable`, it'll be registered again as a `MatSidenavContent`. These change remove the extra `cdkScrollable` from the view in order to avoid the issue. These changes also provide the sidenav content as a `CdkScrollable` for DI purposes. --- src/material/sidenav/drawer.ts | 4 ++++ src/material/sidenav/sidenav-container.html | 2 +- src/material/sidenav/sidenav.ts | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/material/sidenav/drawer.ts b/src/material/sidenav/drawer.ts index b5f113d893c9..205cb8e76648 100644 --- a/src/material/sidenav/drawer.ts +++ b/src/material/sidenav/drawer.ts @@ -96,6 +96,10 @@ export function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean { }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, + providers: [{ + provide: CdkScrollable, + useExisting: MatDrawerContent, + }] }) export class MatDrawerContent extends CdkScrollable implements AfterContentInit { constructor( diff --git a/src/material/sidenav/sidenav-container.html b/src/material/sidenav/sidenav-container.html index 19d4a7fb52e9..f8bbf3c266e0 100644 --- a/src/material/sidenav/sidenav-container.html +++ b/src/material/sidenav/sidenav-container.html @@ -5,6 +5,6 @@ - + diff --git a/src/material/sidenav/sidenav.ts b/src/material/sidenav/sidenav.ts index 9432102162a0..71da1247d95f 100644 --- a/src/material/sidenav/sidenav.ts +++ b/src/material/sidenav/sidenav.ts @@ -28,7 +28,7 @@ import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion'; -import {ScrollDispatcher} from '@angular/cdk/scrolling'; +import {ScrollDispatcher, CdkScrollable} from '@angular/cdk/scrolling'; @Component({ @@ -41,6 +41,10 @@ import {ScrollDispatcher} from '@angular/cdk/scrolling'; }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, + providers: [{ + provide: CdkScrollable, + useExisting: MatSidenavContent, + }] }) export class MatSidenavContent extends MatDrawerContent { constructor(