我正在创建一个Angular 5网站,并尝试让sidenav专门用于较小的屏幕尺寸。
(参考:https://material.angular.io/components/sidenav/overview)
有没有办法实现sidenav而不必将主要内容放在元素中?我只想要一个带链接的副表单,除非我添加mat-sidenav-content
并用数据填充它,否则它不会显示。我必须有格式:
<mat-sidenav-container>
<mat-sidenav>
<mat-nav-list>
..links..
</mat-nav-list>
</mat-sidenav>
<mat-sidenav-content>
..content that fills screen..
</mat-sidenav-content>
</mat-sidenav-container>
我不希望要求mat-sidenav-content
。通用MaterialiseCSS框架不需要它:http://materializecss.com/side-nav.html。
基本上我希望能够将我的标题与主要内容分开,但这个sidenav的事情迫使我将主要内容放在我的标题中......
有什么想法吗?
答案 0 :(得分:0)
mat-sidenav元素绝对定位。因此,它不会影响垫子-sidenav容器的高度。这很可能确保mat-sidenav-content定义了sidenav所定位的内容区域的高度并支持over模式。如果mat-sidenav-content没有内容,则mat-sidenav-container不会有高度。有三种可能的方法来显示没有内容的容器。
html, body, .mat-sidenav-container {
height: 100%;
}
.mat-sidenav-container {
height: 100px;
}
@Directive({
selector: 'mat-sidenav-container[appSupportEmpty]'
})
export class SupportEmptySidenavDirective implements AfterContentInit {
@ContentChild(MatSidenavContent, { read: ElementRef }) contentRef: ElementRef<HTMLElement>;
@ContentChildren(MatSidenav, { read: ElementRef }) sidenavRefs: ElementRef<HTMLElement>[];
constructor(
private container: MatSidenavContainer, private elementRef: ElementRef<HTMLElement>
) { }
ngAfterContentInit() {
if (!this.contentRef.nativeElement.hasChildNodes()) {
this.sidenavRefs.forEach(ref => ref.nativeElement.style.position = 'relative');
}
}
}