加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular2材质响应Sidenav和flex-layout

发布时间:2020-12-17 06:49:45 所属栏目:安全 来源:网络整理
导读:我可以使用open属性或open()方法和flex-layout响应api来使mat-sidenav响应吗? 像 mat-sidenav #sidenav mode =“side”opened =“true”[fxFlex.xs] =“sidenav.close()” 解决方法 您可以考虑使用 @angular/flex-alyout ObservableMedia来监视媒体/断点更
我可以使用open属性或open()方法和flex-layout响应api来使mat-sidenav响应吗?
像< mat-sidenav #sidenav mode =“side”opened =“true”[fxFlex.xs] =“sidenav.close()”>

解决方法

您可以考虑使用 @angular/flex-alyout ObservableMedia来监视媒体/断点更改,并根据活动媒体级别相应地更新模式或其他属性.这是通过订阅注入的ObservableMedia服务实例并检查活动媒体级别来完成的.然后,您可以绑定< md-sidenav>的已打开和模式 properties.通过单向[]绑定到您的类属性.如果需要,可以将此逻辑放入服务和/或属性指令中.

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

希望这有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读