md-sidenav
- 角度材2モードからサイド(デスクトップ)から(モバイル)へ変更することに興味があります。プログラムで変更する方法はありますか? ありがとうmd-sidenavモードの切り替え(角材2)
3
A
答えて
9
ビルモバイルではオーバーレイされますが、デフォルトでは隠されています!
1
確かに!コンポーネントon initializationで画面幅テスト(またはブラウザ検出、ブリーチ)を行い、変数に結果を文字列として格納することができます。
部分app.component.ts
import { Component, ElementRef, ViewChild, OnInit } from '@angular/core';
export class AppComponent implements OnInit {
@ViewChild('wrapper')
private wrapperElement: ElementRef;
private menuMode; // Where we'll store the resulting menu mode
ngOnInit() {
// Do your simple test on the container, for example
if (this.wrapperElement.nativeElement.offsetWidth <= 720) {
this.menuMode = "over";
} else {
this.menuMode = "side";
}
}
}
、テンプレート内sidenavに変数をバインドします。例として、幅検出を使用して
は、あなたがこのような何かを行う可能性があります。
部分app.component.html
<div #wrapper>
<md-sidenav-container>
<md-sidenav #sidenav [mode]="menuMode"></md-sidenav>
...
</div>
その作業の大部分は、ちょうどあなたがテストを実行する方法を決定しています。
ラッパーの代わりにウィンドウをテストすることもできますが、私はラッパーをテストする方が好きです。
注:
- これは未テストコードです。
- これはあなたにも は、ユーザーが自分のブラウザとメニューモードの変更のサイズを変更する場合を扱いたい場合は、あなたが使用してもう少し何か 空想を行う必要があります、コンポーネントの初期化時にのみ発動しますHostListener
@HostListener("window:resize", ["$event"])
ですが、元の 質問の範囲外です。あなたはapp.component.html<md-sidenav [mode]="isLargeScreen() ? 'side' : 'over'" [opened]="isLargeScreen()"></md-sidenav>
を更新できそしてapp.component.ts
isLargeScreen() { const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; if (width > 720) { return true; } else { return false; } }
にこれはあなたによって開かデスクトップ上のサイドバーを与えるスティーブGのソリューションに
+1
私は@ViewChildを使用してDOMからMdSidenav要素を取得し、次にsidenavから直接モードを変更しました。助けてくれてありがとう! –
1
ObservableMediaによって解決策が見つかりました。
コンポーネント:
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>
関連する問題
- 1. 素材デザインライトスイッチを切り替えるJavaScript
- 2. Androidタブレットの横モードと縦モードの切り替え(Samsung 10.1)
- 3. モード切り替えとコマンドを切り離す方法
- 4. httpsからhttpへの角2 HTTPサービスの切り替え
- 5. 別のタブに切り替えると、挿入モードから通常モードに切り替わりますか?
- 6. 角度2のグリッドレイアウトとリストレイアウトを切り替える方法
- 7. 角度のある材質2.クリック時の明るさから暗い色への切り替え
- 8. caffeでGPUモードとCPUモードを切り替える方法は?
- 9. 角度2に簡単に切り替える方法
- 10. 2つのNSWindowを切り替える
- 11. 2つのサブアプリケーションを切り替える
- 12. 角度素材のページ区切り
- 13. spacemacsのvimからemacsモードへの切り替え
- 14. WindowsコマンドラインでのPrologの切り替えモード
- 15. 切り替え
- 16. 新しいURLに切り替えると、角2のクエリパラメータが残ります
- 17. ノード(タブ)を切り替えるNerdTree vimの挿入モード
- 18. lldbのObjective-Cモードに切り替える
- 19. jQueryクラスの切り替えとクッキーの値の切り替え?
- 20. 他のビューの切り替えに切り替えるapp xcode
- 21. メニューの切り替えの切り替え
- 22. 角2の材質
- 23. Dozeモードに切り替えることができません
- 24. VIMでREPLACEモードに切り替える方法
- 25. dev/productionモードに応じてwebpackソースマップを切り替える
- 26. プログラミングモードで飛行モードを切り替える
- 27. LandScapeモードに切り替えた場合でも、非アクティブ化
- 28. fstream truncとappモードを変数で切り替える
- 29. jDeveloperでデバッグ・モードからノーマル・モードに切り替える方法は?
- 30. 角2:サブメニューを切り替えます(jQueryのslideToggleに似ています)
以上にサイドで何を意味するのですか?あなたが望むものが明確ではない –
md-sidenavには、 "over"、 "push"または "side"(https://material.angular.io/components/component/sidenav)のモードがあります –