angular / components

Component infrastructure and Material Design components for Angular
https://material.angular.io
MIT License
24.37k stars 6.75k forks source link

MatDrawer breaks inside ng-content and ngIf #12785

Open dfreier opened 6 years ago

dfreier commented 6 years ago

Bug, feature request, or proposal:

Bug

What is the expected behavior?

mat-drawer with mode=side and opened=true should render drawer and content next to each other (side-by-side)

What is the current behavior?

The mat-drawer-content element "overlays" mat-drawer and takes full container width under the following conditions:

What are the steps to reproduce?

Notice how the text inside mat-drawer-content is not visible, since it is hidden behind mat-drawer: https://stackblitz.com/edit/angular-khyg2w

What is the use-case or motivation for changing an existing behavior?

My Component2 equivalent is a layout component which has a header element and a wrapper for a content element which should be rendered only if some condition is true. In this case i want to pass a mat-drawer-container as content.

So basically the use-case is "MatDrawer with content-projection and structural directives".

Which versions of Angular, Material, OS, TypeScript, browsers are affected?

Angular 6.1.3 Material 6.4.6 Tested on Windows with Chrome, Firefox and IE11

geromegrignon commented 6 years ago

Check your stackblitz link, it doesn't show the bug.

dfreier commented 6 years ago

Sorry, my mistake. Pasted the correct stackblitz link now.

josephperrott commented 6 years ago

It looks like the drawer is determining its sizing before being placed in the DOM so its initial state is incorrect.

Maximaximum commented 3 years ago

Any progress on this? I'm facing the same issue. Is there a usable workaround available?

Maximaximum commented 3 years ago

It looks like this issue was caused by the same reasons: https://github.com/angular/components/issues/15292