【发布时间】:2017-10-20 04:56:30
【问题描述】:
我知道 canActivate 在 Resolver 之前调用。我有一个基于令牌(来自 url 的动态)的场景,我需要路由到三个不同的页面。哪种方法更好。
我是否应该使用 canActivate 并根据令牌和路由从服务中获取数据。或者我应该使用 Resolver 服务根据令牌获取数据并路由到组件?
【问题讨论】:
标签: angular
我知道 canActivate 在 Resolver 之前调用。我有一个基于令牌(来自 url 的动态)的场景,我需要路由到三个不同的页面。哪种方法更好。
我是否应该使用 canActivate 并根据令牌和路由从服务中获取数据。或者我应该使用 Resolver 服务根据令牌获取数据并路由到组件?
【问题讨论】:
标签: angular
解析器确实设置为用于检索数据。它会自动将数据添加到 data[] 中,然后您可以从路由组件访问该数据以获取该数据:
ngOnInit(): void {
this.movie = this.route.snapshot.data['movie'];
}
canActivate 不这样做,更多的是用于在激活路由之前执行的逻辑......例如检查用户是否登录。
【讨论】:
CanActivate 是一个路由器守卫,用于检查路由器是否应该导航到该路由,而 Resolver 是一个数据提供者,它在之前为组件获取数据路由器开始导航。因此,因为您正在尝试获取数据,所以您应该使用 Resolver 而不是 Guard。
【讨论】: