Переключить Sidenav в отдельный компонент, используя угловой материал - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь переключить sidenav, используя угловой материал.sidenav находится в отдельном компоненте, и я не могу его переключить.Я следовал документации Angular Material, но они не использовали sidenav в качестве отдельного компонента.Я не могу найти решение в интернете.Буду признателен, если кто-нибудь сможет помочь.

Структура каталогов

Directory Structure

layout.component.html

<app-navbar (toggleNav)="sideNav.toggle()"></app-navbar>
<mat-sidenav-container autosize>
    <app-sidebar #sideNav></app-sidebar>
    <mat-sidenav-content role="main">
        <router-outlet></router-outlet>
    </mat-sidenav-content>
</mat-sidenav-container>

navbar.component.html

<mat-toolbar color="primary" class="shadow bg-primary">
    <mat-toolbar-row class="bg-primary">
        <button mat-icon-button (click)="sideNavToggle()" class="btn btn-no-border text-white pr-3"><mat-icon>menu</mat-icon></button>
        <a class="navbar-brand text-white" href="#"><img src="../../../../assets/images/logo1.png" alt="UMT" height="50px" width="50px"/><span class="pl-4">University</span></a>

        <!-- This fills the remaining space of the current row -->
        <span class="example-fill-remaining-space"></span>
        <div fxFlex fxLayout fxLayoutAlign="flex-end">
            <ul  fxLaoyout fxLayoutGap="20px" class="navbar-nav ml-auto">
                <li class="nav-item avatar dropdown">
                    <button mat-icon-button [matMenuTriggerFor]="menu" aria-label="Example icon-button with a menu" class="btn btn-no-border nav-link dropdown-toggle text-white">          
                        <img src="https://mdbootstrap.com/img/Photos/Avatars/avatar-2.jpg" alt="" class="img-fluid rounded-circle" height="50px" width="50px">
                    </button>
                    <mat-menu #menu="matMenu">
                        <button mat-menu-item>Jhon</button>
                        <button mat-menu-item>Account Settings</button>
                        <button mat-menu-item>Change Password</button>
                        <button mat-menu-item>Log out</button>
                    </mat-menu>
                </li>
            </ul>
        </div>
    </mat-toolbar-row>
</mat-toolbar>

navbar.compoent.ts

import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';

@Component({
    selector: 'app-navbar',
    templateUrl: './navbar.component.html',
    styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
    @Output() toggleNav = new EventEmitter<boolean>();

    constructor() { }

    ngOnInit() {
    }

    sideNavToggle(){
        this.toggleNav.emit(true);
    }

}

sidebar.component.html

<mat-sidenav  mode="side" opened class="sidenav">
    <mat-toolbar>
        <mat-toolbar-row>
            <h2 class="toolbar-title"> SideBar </h2>
        </mat-toolbar-row>
    </mat-toolbar>
</mat-sidenav>
...