kip*_*ris 5 angular-material angular-material2 angular-flex-layout angular
我可以使用open属性或open()方法和flex-layout响应api来使mat-sidenav响应吗?喜欢<mat-sidenav #sidenav mode="side" opened="true" [fxFlex.xs]="sidenav.close()">
您可以考虑使用@ angular/flex-alyout ObservableMedia来监视媒体/断点更改,并mode根据活动媒体级别相应地更新或其他属性.这是通过订阅注入的ObservableMedia服务实例并检查活动媒体级别来完成的.然后opened,您可以通过单向绑定绑定到mode 属性的绑定和属性.如果需要,可以将此逻辑放入服务和/或属性指令中.<md-sidenav>[]
使用/更新属性而不是应用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 { }
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
希望这有帮助!
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |