angular - MatTableDataSource - 当新记录添加到服务器时如何刷新表
问题描述
我的数据提取工作完美,但在添加新记录后无法重新加载工作。据我所知,每当对行为主体调用下一个方法时,所有观察者都会收到通知,并且数据重新加载会自动发生。但不是那样发生的。
组件.ts
dataSource = new MatTableDataSource<IWorkOrders>();
ngOnInit() {
this.bs.wobSubject$.subscribe((data:IWorkOrders[]) => {
this.dataSource.data = data;
})
这是发布新记录的代码
this.bs.postWorkOrder(this.saleForm.value);
服务.ts
public wobSubject$ = new BehaviorSubject<IWorkOrders[]>([]);
constructor(private http: HttpClient) {
this.getWorkOrder();
}
getWorkOrder() {
this.http.get(this.BASE_URL + '/getworkorders/')
.subscribe((data:IWorkOrders[]) => {
this.wobSubject$.next(data);
});
}
postWorkOrder(workOrder: IWorkOrders) {
this.http.post<IWorkOrders>(this.BASE_URL + '/addworkorder/', workOrder)
.subscribe((data: any) => {
this.wobSubject$.next(data);
});
}
解决方案
this.bs.wobSubject$.subscribe((data:IWorkOrders[]) => {
this.dataSource.data = data;
})
Angular 提供了数据源的抽象,你不应该摆弄它。
尝试改用它。
this.bs.wobSubject$.subscribe((data:IWorkOrders[]) => {
this.dataSource = new MatTableDataSource(data);
})
推荐阅读
- reactjs - 反转 API 调用中的数据顺序适用于 console.log
- javascript - js node.js中的窗口未定义错误
- laravel - 搜索动态数组索引 MongoDB
- sass - 将媒体查询传递给 SASS 混合时出错:错误:未定义的混合
- smalltalk - smalltalk 中的二分查找
- php - 我在应用程序级别的 laravel 根目录中创建了文件夹,但无法在该文件夹文件中获取 laravel 会话
- sql - 如何过滤所有 FK 巧合
- java - 同一张表中的子查询问题
- java - 在模块 IntelliJ IDEA 中指定默认工作目录
- javascript - Angular 12 + Chartjs 3.3.2 TypeError:无法读取属性“左”