使用Angular 6访问子元素并与之交互

使用Angular 6访问子元素并与之交互,angular,angular6,viewchild,Angular,Angular6,Viewchild,我在使用Angular 6材质应用程序访问子元素时遇到问题。我有一个头部组件,它有两个子组件,appheader和appsidenav。header.component.html包含以下代码: <div style="height: 100vh"> <app-tool-bar></app-tool-bar> <app-sidenav></app-sidenav> </div> 此按钮用于切换位于应用程序侧导航组件中

我在使用Angular 6材质应用程序访问子元素时遇到问题。我有一个头部组件,它有两个子组件,
appheader
appsidenav
header.component.html
包含以下代码:

<div style="height: 100vh">
  <app-tool-bar></app-tool-bar>
  <app-sidenav></app-sidenav>
</div>
此按钮用于切换位于
应用程序侧导航组件中的侧导航菜单(滑入和滑出):

<mat-sidenav #sidenav>
    <mat-nav-list>
        ...
    </mat-nav-list>
</mat-sidenav>
然而,这一直给我未定义的。我希望有人能引导我朝着正确的方向去解决这个问题


谢谢。

您无法在oninit钩子或构造函数中访问viewchildren。它需要位于AfterViewInit挂钩或更高版本中。它还只查询dom一次,因此如果有任何显示或隐藏dom的ngIf语句,这将始终是未定义的它在哪里给你
未定义的
?它在
header.component.ts中给我未定义的
,即使在应用了@SachilaRanawaka上面的补丁.SidenavComponent exportAs sidenav之后,你也可以直接使用sidenav
<mat-sidenav #sidenav>
    <mat-nav-list>
        ...
    </mat-nav-list>
</mat-sidenav>
import { Component, ViewChild } from '@angular/core';
import { SidenavComponent } from './sidenav/sidenav.component';

...

@ViewChild(SidenavComponent) sidenav: SidenavComponent;