我正在尝试在更新表中使用的数据后刷新我的Angular Table .
文档说“你可以通过调用renderRows()方法触发对表的渲染行的更新 . ”但它不像普通的子组件,我可以使用“@ViewChild(MatSort)排序:MatSort;”因为我不导入它 .
如果我导入它并尝试类似@ViewChild('myTable')myTable:MatTableModule;然后我收到一个错误,指出renderRows()在该类型上不存在 .
我怎么称呼这种方法?谢谢!
我的表格代码片段:
<mat-table #table [dataSource]="dataSource" myTable class="dataTable">
2 回答
确保导入ViewChild和MatTable:
然后你可以使用ViewChild获取对表的引用(注意MatTable上需要类型T - 我只使用了任何类型,但如果你有一个类型表,你将需要使用该类型:
然后,当您以任何方式修改表时,您将需要调用renderRows()方法 .
这是一个非常简单的工作示例:https://stackblitz.com/edit/angular-bxrahf
我自己解决这个问题时发现了一些来源:
https://material.angular.io/cdk/table/api#CdkTable
https://stackoverflow.com/a/49121032/8508548
你不应该查询字符串 . 这将查询引用(定义为
<cmp #ref>
) . 类型也是错误的:你're not grabbing a module from the view, you'重新抓取一个组件 .您应该导入要查询的组件并执行以下操作(根据您需要查询的组件进行更改):
ViewChild
装饰器中的参数是您要查询的组件,类型只是为了您的方便 - 您可以省略它或说any
,但是您赢了't have any help from TypeScript if you do not do it so it'建议离开它 .