所以我有一个用户列表组件和一个用户详细信息组件。
用户列表组件有一个列出所有注册用户的 md 表。用户可以点击按钮查看相应实体的详细信息。
编辑名称属性并保存(例如)后,用户详细信息重定向到用户列表组件。但是 md-table 显示的是旧信息。
在这种情况下,如何在另一个组件中编辑实体后触发 md-table 刷新?
这是我的用户列表组件:
export class UserListComponent implements OnInit {
tableDisplayedColumns: string[] = ['userName', 'email', 'options'];
userDataSource: UserDataSource;
constructor(private _userService: UserService, private _router: Router) { }
ngOnInit(): void {
this.userDataSource = new UserDataSource(this._userService);
}}
class UserDataSource extends DataSource<UserVModel> {
constructor(private _userService: UserService) {
super();
}
connect(): Observable<UserVModel[]> {
return this._userService.getAllUsers();
}
disconnect(): void { }}
最佳答案
当 connect()
提供的流发出新值时,表格将重新呈现。
getAllUsers
需要在更改时发出一组新数据。否则,从 _userService
中监听一个单独的流(例如 dataChanged
)并使用它再次调用 getAllUsers
。
connect(): Observable<UserVModel[]> {
return this._userService.dataChanged
.switchMap(() => this._userService.getAllUsers()
}
关于angular-material2 - 角度 Material 2 : How to refresh md-table after editing a record?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288271/