使用 ViewChild 访问 MatDrawer 在 Angular 8 中抛出错误

B.B*_*dan 4 angular-material viewchild angular mat-sidenav mat-drawer

我正在尝试使用 Angular 版本 8 中 MatDrawer 类型的属性通过组件文件设置 MatSideNav 的行为

打字稿代码:

// Declaration
@ViewChild('drawer', { static: false }) public drawer: MatDrawer;

// Toggle the Side Nav bar
showSideNav(): void {
    this.drawer.toggle();
}
Run Code Online (Sandbox Code Playgroud)

HTML 代码:

<mat-drawer-container>
      <mat-drawer #drawer>
        <div>Side nav bar content</div>
      </mat-drawer>
      <div>Main content</div>
</mat-drawer-container>
Run Code Online (Sandbox Code Playgroud)

控制台错误:

ERROR TypeError: "this.drawer is undefined"
Run Code Online (Sandbox Code Playgroud)

请帮助我如何使用访问该MatDrawer元素@ViewChild

小智 5

更改声明自

@ViewChild('drawer', { static: false }) public drawer: MatDrawer;
Run Code Online (Sandbox Code Playgroud)

@ViewChild('drawer', { static: true }) public drawer!: MatDrawer;
Run Code Online (Sandbox Code Playgroud)