我想知道为什么这样做。我讨厌修理东西,不知道自己刚刚修理了什么。
虽然在重构代码时遇到了一个错误,但该错误在路由加载之前见过,但是该组件未执行。我有一个简单的博客页面,可以懒惰地加载博客列表。在您从列表中打开博客,然后返回到博客列表(空白)之前,此方法效果很好。
我曾经使用RXJS订阅功能,但是在听过NG-Conf讨论后,让异步管道打开HTML视图中的可观察对象。所以我决定尝试一下。由于Async会为您执行此操作,因此无需订阅/取消订阅。
这是我博客详细信息组件中的原始代码。
ngOnInit() {
this.subscription = this.blogService.blogs$.subscribe();
this.blog$ = this.route.params
.switchMap(param => this.blogService.getBlog(param.id));
}
然后,我只是将服务设置为局部变量。这在ngOnInit之外。
blog$ = this.blogService.blogs$
那行得通,但是我需要博客的ID,所以我尝试了这个。
blog$ = this.blogService.blogs$ = this.route.params
.switchMap(param => this.blogService.getBlog(param.id));
我有一个简单的后退按钮,可以将您带到/ blog路由,该路由以前工作正常,但现在当然会加载空白页面。
茫然地盯着我的电脑一会儿,我终于尝试了。
blog$ = this.blogService.blogs$;
ngOnInit() {
this.blog$ = this.route.params
.switchMap(param => this.blogService.getBlog(param.id));
}
我假设ngOnInit生命周期钩子像以前一样设置id,但是我不明白为什么这会卡在第一个版本中,然后在刷新页面后起作用。
编辑错字