Angular 角度材质垫表不刷新数据
我无法刷新mat表的数据源。我是这样宣布的:Angular 角度材质垫表不刷新数据,angular,angular7,mat-table,Angular,Angular7,Mat Table,我无法刷新mat表的数据源。我是这样宣布的: dataSource:MatTableDataSource=new MatTableDataSource(); 其中,Custom_Data是我用自定义字段创建的一个接口。在ngOnInit中,我从服务器获取数据并执行以下操作: this.networkService.getCapitaliSelectItem(this.idCompeto).subscribe(d=>{ 表数据=d; this.tableData.forEach(c=>{ //操
dataSource:MatTableDataSource=new MatTableDataSource();
其中,Custom_Data
是我用自定义字段创建的一个接口。在ngOnInit中,我从服务器获取数据并执行以下操作:
this.networkService.getCapitaliSelectItem(this.idCompeto).subscribe(d=>{
表数据=d;
this.tableData.forEach(c=>{
//操纵数据
});
this.dataSource=新MatTableDataSource(this.tableData);
//放在这里是为了触发变化检测,而不是工作
this.changeDetector.detectChanges();
}
表上没有显示任何数据。然后我有一个筛选方法,因为在我的表的标题中有两个输入字段,用于筛选表中的数据。在这种情况下,如果我写了一些东西,将调用方法筛选,我的数据将显示在表中,一切正常。过滤方法为:
applyFilter(filterValue:string,column:string){
filterValue=filterValue.trim();//删除空白
filterValue=filterValue.toLowerCase();//MatTableDataSource默认为小写匹配
如果(数字(filterValue.length)!=0){
this.dataSource.data=this.tableData.filter(d=>d[column].toLowerCase().indexOf(filterValue)>-1);
}否则{
this.dataSource.data=this.tableData;
}
}
为什么这个方法有效而不是ngOnInit方法?我也尝试了
this.dataSource.data=this.tableData
而不是this.dataSource=new MatTableDataSource(this.tableData);
,但不起作用。可以在stackblitz中准备一个工作示例吗?不必从外部服务器获取数据,您可以使用of()准备一些模拟数据作为可观察数据运算符。@IraklisGkougkousis我准备了一个Stackblitz,但它在那里工作…我真的不知道为什么,我做了相同的操作..唯一不同的是我的表处于模态中,但它在加载时应该表现得像一个普通组件,我猜?…changeDetector.detectChanges()是什么意思是吗?@IraklisGkougkousis基本上它检查所有需要更新的视图并重新渲染。它来自angular-core。这有帮助吗?