试图了解canActivate和Resolver之间的区别

时间:2017-10-19 20:34:35

标签: angular

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

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

2 个答案:

答案 0 :(得分:7)

CanActivate 是一个路由器保护程序,用于检查路由器是否应该导航到路由并且 Resolver 是数据提供程序,以便在之前获取组件的数据路由器开始导航。因此,因为您正在尝试获取数据,所以您应该使用Resolver而不是Guard。

答案 1 :(得分:5)

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

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

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