代码之家  ›  专栏  ›  技术社区  ›  Marc Rasmussen

@viewChild为空

  •  0
  • Marc Rasmussen  · 技术社区  · 6 年前

    在我的组件中,我有以下组件:

    @ViewChild('PaginatedTableComponent') userTable: PaginatedTableComponent;
    

    在这个组件中,我有以下HTML:

    <pag-paginated-table #userTable
           [(shouldUpdate)]="shouldUpdate"
           [route]="academyMembersRoute"
           [dataStructure]="academyMembersdataStructure"
           [adminActions]="adminActions"
           [include]="academyMembersInclude">
    </pag-paginated-table>
    

    然而, userTable 变量是 null 是的。

    有谁能告诉我我可能遗漏了什么吗?或者为什么会这样?

    更新

    所以如果我调用 ngOnInit 这表明变量设置正确。

    但是,如果我等待并从以下位置打电话:

    addUserClose() {
        this.userTable.callRoute();
        this.shouldUpdate = !this.shouldUpdate;
    }
    

    它表示变量未定义。

    3 回复  |  直到 6 年前
        1
  •  1
  •   Ali Khan    6 年前

    这可能是因为您在启动之前正在访问它。尝试在超时时以零超时方式访问它,或者在“ngoninit”函数被触发后或之后访问它。 谢谢

        2
  •  0
  •   Akhil Aravind    6 年前

    你在里面付出的 @ViewChild('your_Variable') 在HTML中使用 #your_Variable

    改变你 component.ts

    @ViewChild('PaginatedTableComponent') userTable: PaginatedTableComponent;
    

    然后改变你 component.html

    <pag-paginated-table #PaginatedTableComponent
           [(shouldUpdate)]="shouldUpdate"
           [route]="academyMembersRoute"
           [dataStructure]="academyMembersdataStructure"
           [adminActions]="adminActions"
           [include]="academyMembersInclude">
    </pag-paginated-table>
    
        3
  •  0
  •   federico scamuzzi    6 年前

    你试过了吗:

    @ViewChild('userTable') userTable: PaginatedTableComponent; // NOT @ViewChild('PaginatedTableComponent')