有人可以在加载表并更新表时,使用数据源添加数据的完整示例吗?
我的程序设法显示表,数据加载,要求新数据的对话框,要添加到数据库的数据,但我不知道如何刷新表
我找到了这个例子
connect(): Observable<UserVModel[]> {
return this._userService.dataChanged
.switchMap(() => this._userService.getAllUsers()
}
在此链接中: Angular Material 2: How to refresh md-table after editing a record?
但我不知道如何实施它。
谢谢
答案 0 :(得分:1)
有几种方法可以实现您的要求。这是我在项目中使用的:
这实现了数据源的抽象:
class DataSourceManager<T> {
private readonly manualSource = new Subject<T>();
constructor(private readonly source: Observable<T>) {
}
public getObserver(): Observable<T> {
return merge(
this.source,
this.manualSource,
);
}
public reload(): void {
this.source.subscribe(x => {
this.push(x);
});
}
public push(value: T): void {
this.manualSource.next(value);
}
}
这是在MyItem
上键入的数据集,通过MyItemService
获取(这些数据集是琐碎的且超出范围):
class MyDataSource extends DataSource<MyItem> {
public readonly manager: DataSourceManager<MyItem[]>;
constructor(private readonly myService: MyItemService) {
super();
this.manager = new DataSourceManager<MyItem[]>(
this.myService.getAllItemsObserver();
}
public connect(): Observable<MyItem[]> {
return this.manager.getObserver();
}
public disconnect() {
}
}
现在,当您需要手动更新数据源时,只需调用dataSource.manager.push
答案 1 :(得分:0)
您可以使用yourarray.push(您的新对象)将结果推送到数组。 (添加新记录后)
答案 2 :(得分:0)
我使用了一个空的(不纯的)管道并将其放入表ngFor循环中以获取此功能。