我在查询父组件中子组件的指令时遇到问题 表组件使用scrollableView指令。和表组件用于我的报告摘要组件。 在reportSummary组件中我试图使用@ViewChild查找scrollbaleView指令的实例。 我能够使用@ViewChild(DataTable)表找到表组件:DataTable; 同样,我应该能够找到@ViewChild(ScrollableView)scrollview:ScrollableView; 但事实并非如此 ViewChild文档说明了这一点 https://angular.io/api/core/ViewChild 您可以使用ViewChild从视图DOM获取第一个元素或与选择器匹配的指令。如果视图DOM更改并且新子项与选择器匹配,则将更新该属性。 在调用ngAfterViewInit回调之前设置视图查询。
有趣的是,在ngAfterViewInit函数中找不到表引用,我可以在其他地方获取值。 但是在任何时候都找不到scrollableView。
还应该查询和提供scrollableView。
答案 0 :(得分:0)
如果查看p-dataTable
组件的模板,如果pScrollableView
为p-dataTable
,您会看到scrollable
仅加载到DOM。
datatable.ts
<ng-template [ngIf]="scrollable">
<div class="ui-datatable-scrollable-wrapper ui-helper-clearfix">
<div *ngIf="hasFrozenColumns()" [pScrollableView]="frozenColumns" frozen="true"
[headerColumnGroup]="frozenHeaderColumnGroup" [footerColumnGroup]="frozenFooterColumnGroup"
[ngStyle]="{'width':this.frozenWidth}" class="ui-datatable-scrollable-view ui-datatable-frozen-view">
</div>
...
</ng-template>
所以你必须定义你的DataTable,以便它使用ScrollableView,否则它不会在DOM中。
<p-dataTable [value]="cars" [loading]="loading" [scrollable]="true" scrollHeight="100px" >