开发者问题收集

无法读取未定义@viewchild 的属性“nativeElement”

2018-12-01
359

情况如下, 我有主文件选项卡组件,其中我使用 @ViewChild() 包含了文本组件;现在在 ngAfterViewInit() 上,我正在初始化菜单和子菜单列表。一旦我完成创建子菜单列表,我就想将它们分配给文本组件。这样,当用户单击文本组件时,他将看到选项卡组件分配的子组件。

ngAfterViewInit() {
    // menu initialization
    // sub-menu initialization
    this.tabTextComponent.nativeElement.selectedSubTabs = this.selectedSubTabs;
}

我尝试过使用和不使用元素引用,但都没有用。我也访问过其他解决方案,但对我来说都不起作用。有人能帮助我吗?

1个回答

您定义 this.tabTextComponent 的方式可能存在问题。请尝试以下操作(假设您的组件的类是 TabTextComponent):

@ViewChild(TabTextComponent) tabTextComponent: TabTextComponent;

ngAfterViewInit() {
    // this.tabTextComponent should be defined here
    this.tabTextComponent.selectedSubTabs = this.selectedSubTabs;
}

另请注意,除非您尝试对 DOM 执行某些操作,否则无需使用 nativeElement。如果 selectedSubTabs 是 TabTextComponent 类的非私有属性,则您可以直接访问它。

(顺便说一句,您似乎正在尝试从父级设置子组件的属性?您可以考虑改用 @Input 绑定。​​)

codequiet
2018-12-01