角钢5的旋转变压器有什么好处

Lap*_*mir 4 angular

我是Angular 2+中的新手。有些人在获取数据的HTTP服务和组件之间使用Resolver

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>();
        });
}
Run Code Online (Sandbox Code Playgroud)

}

问题是:

  1. 这样做的实际好处是什么?(我仅将冗余类视为每次调用的桥梁)
    1. 这是推荐的方法,是否应该重构现有代码。

小智 6

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

从文章引用:

因此,基本上,解析器就是该中间代码,该中间代码可以在单击链接后且在加载组件之前执行。

...这是高级方法:

一般工艺流程

  1. 用户单击链接。
  2. 角加载相应的组件。

使用解析器的路由流

  1. 用户单击链接。
  2. Angular执行某些代码并返回一个值或可观察值。
  3. 您可以在要加载的组件类中的构造函数或ngOnInit中收集返回值或可观察的值。
  4. 将收集的数据用于您的目的。
  5. 现在您可以加载您的组件了。

步骤2、3和4是使用称为Resolver的代码完成的。


Lap*_*mir 6

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

  1. 在没有解析器的第一种方法的情况下,我们需要等到数据通过异步订阅加载。在组件中,有些元素会立即显示,有些元素会在 Observable.subscribe 调用之后显示。

  2. 在第二种情况下,解析器捕获所有数据并将其传递给组件,直到所有组件加载完毕,组件中的数据才会显示出来。

因此,解析器有助于在显示组件之前处理数据。