旋转角5的好处是什么?

时间:2018-05-17 12:01:55

标签: angular

我是Angular 2+的新手。有些人在http服务获取数据和组件之间使用解析器

export class UserResolver implements Resolve<User> {

constructor(
    private service: UserService,
    private router: Router
) {}

resolve(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
): Observable<User> {
    const id = route.paramMap.get('id');
    return this.service.getUser(+id)
        .catch(err => {
            console.error(err); // deal with API error (eg not found)
            this.router.navigate(['/']); // could redirect to error page
            return Observable.empty<User>();
        });
}

}

问题是:

  1. 实际利益是什么? (我在每次调用时只看到冗余类作为桥接)
    1. 这是推荐的方式,是否应该重构现有代码。

2 个答案:

答案 0 :(得分:4)

看一下Angular Resolvers的介绍。 查看下面的步骤,请注意,在第2步中,您的示例将返回一个Observable。

引用文章:

所以解析器基本上就是中间代码,可以在单击链接时和加载组件之前执行。

......这是高级方法:

常规路由流程

  1. 用户点击该链接。
  2. 角度加载相应的组件。
  3. 使用解析程序的路由流程

    1. 用户点击该链接。
    2. Angular执行某些代码并返回值或可观察的值。
    3. 您可以在构造函数中或在即将加载的组件的类中的ngOnInit中收集返回值或observable。
    4. 将收集的数据用于您的目的。
    5. 现在您可以加载您的组件。
    6. 步骤2,3和4使用名为Resolver的代码完成。

答案 1 :(得分:1)

感谢Jim Cooper Pluralsight课程: https://app.pluralsight.com/player?course=angular-fundamentals&author=jim-cooper&name=angular-fundamentals-m5&clip=8&mode=live

  1. 如果没有Resolver的第一种方法,我们需要等到数据通过asyncronous subscribe加载。在组件中,一些元素立即显示,一些元素在Observable.subscribe调用之后显示。

  2. 在第二种情况下,解析器捕获所有数据并将其传递给组件 在加载所有组件之前,组件中的数据不会显示。

  3. 因此解析器有助于在显示组件之前烹饪数据。