Angular Materials菜单示意图已打开

问题描述 投票:1回答:1

只需在JS / TS / CSS / HTML / Angular6中投入使用,我正在尝试制作一个相当基本的Web应用程序。我创建了一个有角度的应用程序,并尝试使用预构建的导航原理图制作标题。我花了一段时间,但我意识到侧面导航菜单不应该只是打开而应该关闭。

我注意到在HTML中可以打开/关闭菜单的位置:

[opened]="(isHandset$ | async) === false">

但是我认为有一个内置的切换按钮,当您将该值设置为true时,应该保持公开状态。除了在原理图中指示的内容中添加路由器外,我没有更改原理图,所以我认为这不是问题所在,并且我对JS / HTML还是很陌生,所以我不确定为什么这不是开箱即用。

HTML(header.component.html):

<mat-sidenav-container class="sidenav-container">
  <mat-sidenav #drawer class="sidenav" fixedInViewport
      [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
      [mode]="(isHandset$ | async) ? 'over' : 'side'"
      [opened]="(isHandset$ | async) === true">
      <mat-toolbar>Menu</mat-toolbar>
    <mat-nav-list>
      <a mat-list-item href="actions">Action List</a>
      <a mat-list-item href="#">Link 2</a>
      <a mat-list-item href="#">Link 3</a>
    </mat-nav-list>
  </mat-sidenav>
  <mat-sidenav-content>
    <mat-toolbar color="primary">
      <button
        type="button"
        aria-label="Toggle sidenav"
        mat-icon-button
        (click)="drawer.toggle()"
        *ngIf="isHandset$ | async">
        <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
      </button>
      <span>Dnd 5e Reference Site</span>
    </mat-toolbar>
    <!-- Add Content Here -->
    <app-homepage></app-homepage>
  </mat-sidenav-content>
</mat-sidenav-container>

TS(header.component.ts):

import { Component } from '@angular/core';
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
import { Observable } from 'rxjs';
import { map, shareReplay } from 'rxjs/operators';

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.scss']
})
export class HeaderComponent {

  isHandset$: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset)
    .pipe(
      map(result => result.matches),
      shareReplay()
    );

  constructor(private breakpointObserver: BreakpointObserver) {}

}

scss文件(header.component.scss):

.sidenav-container {
  height: 100%;
}

.sidenav {
  width: 200px;
}

.sidenav .mat-toolbar {
  background: inherit;
}

.mat-toolbar.mat-primary {
  position: sticky;
  top: 0;
  z-index: 1;
}

关闭菜单后,应用程序外观的图片。请注意,我相信应该在左上角或右上角有一个菜单按钮,用于在菜单关闭时将其打开。

Web app home page when [Opened] = "true"

[如果有人可以解释原理图的问题,那将是很好的。此外,如果任何人有他们推荐的资源来进行Observable的练习或在angular中使用ng标签,我将不胜感激。

谢谢!

html typescript angular-material angular6 observable
1个回答
0
投票

因此,对于偶然发现此问题的任何人。我通过删除断点语法解决了它。

<mat-sidenav-container class="sidenav-container">
  <mat-sidenav #drawer class="sidenav" fixedInViewport>
      <mat-toolbar>Menu</mat-toolbar>
    <mat-nav-list>
      <a mat-list-item href="actions">Action List</a>
      <a mat-list-item href="synopsis"> Synopsis</a>
      <a mat-list-item href="#">Link 3</a>
    </mat-nav-list>
  </mat-sidenav>
  <mat-sidenav-content>
    <mat-toolbar color="primary">
      <button type="button" aria-label="Toggle sidenav" mat-icon-button (click)="drawer.toggle()">
        <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
      </button>
      <span><i class="fab fa-fort-awesome-alt fa-3x">Dnd 5e Reference Site</i></span>
    </mat-toolbar>
    <!-- Add Content Here -->
    <div class="jumbotron-fluid">
    <app-homepage></app-homepage>
  </div>
  </mat-sidenav-content>
</mat-sidenav-container>
© www.soinside.com 2019 - 2024. All rights reserved.