Angular 有没有一种方法可以在不重新呈现表的情况下更新mat表数据源?
我有一个带有可扩展行的mat表,当数据源更新时,所有打开的行都会自动关闭,页面也会丢失滚动位置。如何在不影响当前状态的情况下更新表数据 示例代码:Angular 有没有一种方法可以在不重新呈现表的情况下更新mat表数据源?,angular,typescript,angular-material,mat-table,Angular,Typescript,Angular Material,Mat Table,我有一个带有可扩展行的mat表,当数据源更新时,所有打开的行都会自动关闭,页面也会丢失滚动位置。如何在不影响当前状态的情况下更新表数据 示例代码: 我只是在试验mat table api和数据源接口,所以我可能遗漏了一些东西,但您描述的一个选项是避免每次mat table内部调用connect方法时创建新的可观察对象。相反,只要有新数据可用,就返回BehaviorSubject并调用next 根据stackblitz示例,只需通过返回BehaviorSubject并添加新方法来修改Example
我只是在试验mat table api和数据源接口,所以我可能遗漏了一些东西,但您描述的一个选项是避免每次mat table内部调用connect方法时创建新的可观察对象。相反,只要有新数据可用,就返回BehaviorSubject并调用next 根据stackblitz示例,只需通过返回BehaviorSubject并添加新方法来修改ExampleDataSource,以便在表中有新数据时使用:
export class ExampleDataSource extends DataSource<any> {
private _data$: BehaviorSubject<any[]> = new BehaviorSubject([]);
data$ = this._data$.asObservable();
update(data) {
const rows = [];
data.forEach(element => rows.push(element, { detailRow: true, element }));
this._data$.next(rows);
}
/** Connect function called by the table to retrieve one stream containing the data to render. */
connect(): Observable<Element[]> {
return this.data$;
}
disconnect() { }
}
并且,我在超时时以相反顺序触发数据更新以进行验证