gpt4 book ai didi

Angular2 Material Responsive Sidenav 和 flex-layout

转载 作者:太空狗 更新时间:2023-10-29 17:32:00 26 4
gpt4 key购买 nike

我可以使用 opened 属性或 open() 方法和 flex-layout 响应式 api 让我的 mat-sidenav 响应式吗?喜欢<mat-sidenav #sidenav mode="side" opened="true" [fxFlex.xs]="sidenav.close()">

最佳答案

您可以考虑使用 @angular/flex-alyout ObservableMedia观察媒体/断点变化并更新 mode或其他属性,具体取决于事件媒体级别。这是通过订阅注入(inject)的 ObservableMedia 来完成的服务实例并检查事件媒体级别。然后您可以绑定(bind) openedmode properties<md-sidenav>通过一种方式[]绑定(bind)到您的类属性。如果需要,可以将此逻辑放入服务和/或属性指令中。

使用/更新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>

关于Angular2 Material Responsive Sidenav 和 flex-layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46690671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com