Angular 通过eventEmmiter()关闭mat侧栏

Angular 通过eventEmmiter()关闭mat侧栏,angular,angular-material,Angular,Angular Material,我使用材质侧栏显示移动菜单。 我想在单击菜单中的任何项目时关闭侧边栏 我通过EventEmmiter()函数发送,以关闭从子控制器到父控制器的侧栏 public onSidenavClose = () => { this.sidenavClose.emit(); }; 在app.component.html中,我这样设置 <mat-sidenav-container fxFlexFill> <mat-sidenav #sidenav (s

我使用
材质侧栏
显示移动菜单。 我想在单击菜单中的任何项目时关闭侧边栏

我通过
EventEmmiter()
函数发送,以关闭从子控制器到父控制器的侧栏

public onSidenavClose = () => {
        this.sidenavClose.emit();
    };
在app.component.html中,我这样设置

<mat-sidenav-container fxFlexFill>
    <mat-sidenav #sidenav (sidenavClose)="sidenav.close()">
      <mat-nav-list>
        <app-nav-item></app-nav-item>
      </mat-nav-list>
    </mat-sidenav>
    <mat-sidenav-content fxFlexFill>Main content</mat-sidenav-content>
  </mat-sidenav-container>


您需要在stackblitz中调整已打开预览的大小以获取移动导航。

您将事件发射器添加到错误的元素,请将
(sidenavClose)=“sidenav.close()”
添加到应用导航项

<app-nav-item (sidenavClose)="sidenav.close()"></app-nav-item>
应用程序组件.ts

***
import { SidebarEventsService } from '../../sidebar-events.service';

***
constructor(private sidebarEventsService: SidebarEventsService) {}

***
onSidenavClose = () => {
  this.sidebarEventsService.closeSidebarEvent.next();
};
***
import { SidebarEventsService } from './sidebar-events.service';
@ViewChild("sidenav", { static: false }) sidenav; // For angular 8 only
@ViewChild('sidenav') sidenav; // will be (static: false) by default from angular 9

  constructor(private sidebarEventsService: SidebarEventsService) {
    this.sidebarEventsService.closeSidebarEvent$.subscribe(() => this.sidenav.toggle());
  }

请,sry我放错了网址,现在我编辑…请看一看。。。当我添加
@ViewChild('sidenav')sidenav时
get error
需要2个参数,但得到1个。
在angular 8中,需要另一个参数作为
@ViewChild('sidenav',{static:false})
。快乐编码:)谢谢,谢谢。。。。请在您的回答中编辑
@ViewChild(“sidenav”,{static:false})sidenav
***
import { SidebarEventsService } from './sidebar-events.service';
@ViewChild("sidenav", { static: false }) sidenav; // For angular 8 only
@ViewChild('sidenav') sidenav; // will be (static: false) by default from angular 9

  constructor(private sidebarEventsService: SidebarEventsService) {
    this.sidebarEventsService.closeSidebarEvent$.subscribe(() => this.sidenav.toggle());
  }