【发布时间】:2021-05-06 14:08:39
【问题描述】:
我有一个使用解析器获取数据的父路由。 我有几个这条路线的孩子。 子组件在其 ngOnInit() 方法中订阅此数据。
ngOnInit() {
this.route.parent.data
.subscribe((data: { collection: DataCollection }) => {
this.collection = data.collection;
});
}
解析器仅在其中一个子路由的第一次访问时运行。
这一直很好,因为直到现在更改collection 的状态还没有对 UI 产生影响,但这不再是真的。 (特别是各个屏幕的 UI 中的按钮需要根据collection 的状态来启用/禁用。)
所以问题在于,由于子路由/组件从解析器中设置了 collection,它只触发一次,所以他们看不到它的更新,也无法相应地更新他们的 UI。
我看到很多帖子询问与此类似的问题,但没有一个涉及解析器。
有没有一种方法可以强制重新运行解析器,而无需导航离开然后返回到路线?或者是放弃 Resolver 方法的解决方案,使用服务来获取数据,并使用 RXJS 或其他方式处理对其状态的更新?
谢谢
【问题讨论】:
标签: angular state refresh reload resolver