我是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)
}
问题是:
小智 6
看一下Angular Resolvers的介绍。查看下面的步骤,请注意,在第2步中,您的示例将返回一个Observable。
从文章引用:
因此,基本上,解析器就是该中间代码,该中间代码可以在单击链接后且在加载组件之前执行。
...这是高级方法:
一般工艺流程
使用解析器的路由流
步骤2、3和4是使用称为Resolver的代码完成的。
感谢 Jim Cooper Pluralsight 课程:https ://app.pluralsight.com/player?course = angular-fundamentals & author = jim-cooper & name = angular-fundamentals-m5 & clip =8& mode = live
在没有解析器的第一种方法的情况下,我们需要等到数据通过异步订阅加载。在组件中,有些元素会立即显示,有些元素会在 Observable.subscribe 调用之后显示。
在第二种情况下,解析器捕获所有数据并将其传递给组件,直到所有组件加载完毕,组件中的数据才会显示出来。
因此,解析器有助于在显示组件之前处理数据。
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |