【问题标题】:In Angular 10: can I refresh data from Resolver of parent route?在 Angular 10 中:我可以从父路由的解析器刷新数据吗?
【发布时间】: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


    【解决方案1】:

    您是否尝试将您的组件添加为 @ViewChild 并在组件中实现类似刷新功能的功能?

    @ViewChild(Component1) comp1: Component1;
    @ViewChild(Component2) comp2: Component2;
    

    @ViewChildren(Component1) comps: QueryList<Component1>;
    
    comp1.refresh();
    
    refresh(state): void {
    // this.data = state;
    // this.data = initData();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2017-10-29
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      相关资源
      最近更新 更多