【问题标题】:Trying to understand difference between canActivate and Resolver试图了解 canActivate 和 Resolver 之间的区别
【发布时间】:2017-10-20 04:56:30
【问题描述】:

我知道 canActivate 在 Resolver 之前调用。我有一个基于令牌(来自 url 的动态)的场景,我需要路由到三个不同的页面。哪种方法更好。

我是否应该使用 canActivate 并根据令牌和路由从服务中获取数据。或者我应该使用 Resolver 服务根据令牌获取数据并路由到组件?

【问题讨论】:

    标签: angular


    【解决方案1】:

    解析器确实设置为用于检索数据。它会自动将数据添加到 data[] 中,然后您可以从路由组件访问该数据以获取该数据:

    ngOnInit(): void {
        this.movie = this.route.snapshot.data['movie'];
    }
    

    canActivate 不这样做,更多的是用于在激活路由之前执行的逻辑......例如检查用户是否登录。

    【讨论】:

    • 感谢您的回复。我没有足够的声望来选择答案。
    • 在允许选择答案之前有时会有延迟。但它应该允许您选择自己问题的答案。
    • 如果我使用的是ngrx store,我应该使用resolver来获取数据吗?甚至数据也被提取到存储中而不是返回到 data[]?在这种情况下我应该返回 store.pipe(select(fetchedDataSelector)) 吗?
    【解决方案2】:

    CanActivate 是一个路由器守卫,用于检查路由器是否应该导航到该路由,而 Resolver 是一个数据提供者,它在之前为组件获取数据路由器开始导航。因此,因为您正在尝试获取数据,所以您应该使用 Resolver 而不是 Guard。

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 2020-08-20
      • 2019-10-30
      • 2011-10-26
      • 2011-05-16
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多