Angular 侧导航模式';超过';vs';侧面';在材质2中,角度为4
我希望Angular 侧导航模式';超过';vs';侧面';在材质2中,角度为4,angular,angular-material2,Angular,Angular Material2,我希望sidenav的模式根据屏幕大小在over和side之间切换 我发现下面的例子,但组件媒体似乎是不推荐的材料。什么是最佳实践 constructor(public sidenav: SidenavService, public media: Media) { } hasMedia(breakSize: string): boolean { return this.media.hasMedia(breakSize); } 更简单的是: <md-sid
sidenav
的模式根据屏幕大小在over
和side
之间切换
我发现下面的例子,但组件媒体似乎是不推荐的材料。什么是最佳实践
constructor(public sidenav: SidenavService,
public media: Media) {
}
hasMedia(breakSize: string): boolean {
return this.media.hasMedia(breakSize);
}
更简单的是:
<md-sidenav-container>
<md-sidenav #sidenav [mode]="myMode" opened="true">
<!-- Your content + close the tags -->
现在,您所要做的就是获取文档宽度并选择何时更改模式 我通过ObservaleMedia找到了解决方案,但代码可能更好: 组成部分:
import {Component, OnInit, ViewEncapsulation} from "@angular/core";
import {ObservableMedia} from "@angular/flex-layout";
@Component({
moduleId: module.id,
selector: 'app-sidebar',
templateUrl: './sidebar.component.html',
styleUrls: ['./sidebar.component.scss'],
encapsulation: ViewEncapsulation.None,
})
export class SidebarComponent implements OnInit {
constructor(public media:ObservableMedia ) {
}
ngOnInit(): void {
}
}
模板:
<md-sidenav-container>
<md-sidenav #sidenav mode="{{media.isActive('gt-sm') ? 'side' : 'over'}}" align="begin" class="md-whiteframe-4dp" opened >
<md-nav-list>
...
</md-nav-list>
</md-sidenav>
</md-sidenav-container>
...
我知道,但是屏幕大小呢?在Google man上10秒<代码>let width=document.body.clientWidth似乎你不明白我的问题。我想实现这个组件,所以可以像hasmedia('gt-sm')那样调用hasmedia,我不想定义自己的width方法。我正在寻找材料方面的最佳实践。我已经研究过flexlayout,但看不到如何实现has媒体方法。我告诉你的是管理sidenav的最简单方法。如果您想创建一个可以处理sidenav的组件,那么您是对的,我没有理解要点,我也无法帮助您,抱歉:/谢谢您的尝试。但我认为我的示例已经表明我想在组件中实现为方法。无论如何谢谢你。
<md-sidenav-container>
<md-sidenav #sidenav mode="{{media.isActive('gt-sm') ? 'side' : 'over'}}" align="begin" class="md-whiteframe-4dp" opened >
<md-nav-list>
...
</md-nav-list>
</md-sidenav>
</md-sidenav-container>