我可以使用open属性或open()方法和flex-layout响应api使我的mat-sidenav响应吗? Like <mat-sidenav #sidenav mode="side" opened="true" [fxFlex.xs]="sidenav.close()">
Angular2 Material Responsive Sidenav和flex-layout
3
A
回答
5
你可以考虑使用@angular/flex-alyoutObservableMedia观看媒体/断点修改和更新mode
或其他性质相应地取决于活性介质水平。这通过订阅注入的ObservableMedia
服务实例并检查活动媒体级别来完成。然后,您可以通过绑定到您的类属性的一种方式将opened
和mode
properties的<md-sidenav>
绑定到一个方法[]
。如果需要,可以将此逻辑放入服务和/或属性指令中。
使用/更新properties而不是应用CSS更改将确保正确的动画发生。
TS:
import { Component } from '@angular/core';
import { MediaChange, ObservableMedia } from "@angular/flex-layout";
@Component({ ... })
export class AppComponent {
mode: string = 'side';
opened: boolean = true;
constructor(private media: ObservableMedia) {
this.media.subscribe((mediaChange: MediaChange) => {
this.mode = this.getMode(mediaChange);
// this.opened = this.getOpened(mediaChange);
});
}
private getMode(mediaChange: MediaChange): string {
// set mode based on a breakpoint
if (this.media.isActive('gt-sm')) {
return 'side';
} else {
return 'over';
}
}
// open/close as needed
private getOpened(mediaChange: MediaChange): string { }
}
HTML:
<md-sidenav-container class="example-container">
<md-sidenav #sidenav class="example-sidenav" [opened]="opened" [mode]="mode">
Jolly good!
</md-sidenav>
<div class="example-sidenav-content">
<p>Sidenav content</p>
<button type="button" md-button (click)="sidenav.open()">
Open sidenav
</button>
</div>
</md-sidenav-container>
希望帮助!
0
一种方法是使用flex处理css中的响应,方法是根据打开还是关闭,为您的mat-sidenav创建一个类。
<mat-sidenav [ngClass]="sidenav.opened ? 'sideOpened' : 'sideClosed'">
的.css
.sideOpened {
// Handle Responsiveness
}
.sideClosed {
// Handle Responsiveness
}
相关问题
- 1. Angular2 Material md-sidenav-container在ng测试中导致异常
- 2. 使用Angular Material 2和SideNav的元素焦点
- 3. 如何在组件内使用Angular 2 Material Sidenav?
- 4. 导入flexLayout后Angular2应用程序不工作
- 5. Angular2 Material SnackBar集成问题
- 6. Angular2 Material md-button错误
- 7. 如何使用FlexLayout,Angular 4,Material Design来增加一个组件的高度
- 8. Flexlayout不支持* ngfor?
- 9. 如何使用Angular-Material获得完整高度的sidenav
- 10. Angular2中的可重用Sidenav材质设计
- 11. Angular2 material md-input type =“date”not in IE 11
- 12. 加载错误ng2-material-select angular2
- 13. Materialise Sidenav Icon Issue Issue
- 14. 在Angular2中包含Material Design Lite(MDL)
- 15. 如何在Angular2中集成Material Design Lite
- 16. ReactNative:TextInput在FlexLayout中消失
- 17. Class'kartik \ sidenav \ SideNav'找不到
- 18. Responsive topnav
- 19. Responsive Photoswipe
- 20. 粘性工具栏素材2和sidenav
- 21. Angular2 + Material:mat-toolbar在mat-sidenav-container上没有阴影,尽管是mat-elevation-z *
- 22. Angular Material 2:SideNav无法正确显示其他组件中的任何元素
- 23. md-sidenav-container在angular2材质中不显示内容
- 24. Bootstrap Responsive Jumbotron
- 25. Bootstrap responsive div
- 26. SAPUI5 - Responsive sap.m.Table
- 27. Div's not responsive [foundation]
- 28. Responsive Padding Trouble
- 29. Bootstrap Responsive Utility Class
- 30. React responsive Navbar
非常感谢!它帮助我:) – kipris