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

时间:2018-12-01 06:31:40

标签: angular viewchild

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

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

我尝试了有无元素ref,但是没有任何效果。我还访问了其他解决方案,但对我没有任何帮助。有人可以帮我吗?

1 个答案:

答案 0 :(得分: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绑定。)