大佬教程收集整理的这篇文章主要介绍了angular – 如何取消订阅路径解析类中的observable,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
ngOnInit() { this.sub = this.route.params.subscribe(params => { this.projectId = +params['id']; this.projectStore.project = this.projectId; // load data when the route changes this._tasksService.gettasks(this.projectId).subscribe(years => { this.tasks = years.map(y => new task(y)) }); // no need to clean up the subscription }); // load data when the component is initialized this._tasksService.gettasks(this.projectId).subscribe(years => { this.tasks = years.map(y => new task(y)) }); // no need to clean up the subscription } ngOnDestroy() { this.sub.unsubscribe(); }
现在我想把它放在路由器解析类中,但是没有ngOnDestroy – 当然 – 只是一个我再次订阅的NavigationEnd事件.
这意味着我订阅了一个NavigationStart事件(当我离开路线时发生)以取消订阅另一个订阅,这是路由参数更改订阅HAHAHA …
我想这不是可行的方法,但谷歌什么也没提供.
任何人都知道如何处理这种情况?或者应该路由params更改订阅真的只属于一个组件?
constructor(private service: TasksService,private router: Router) { this.navigationEnded = this.router.events .filter(event => event instanceof NavigationStart) .map(() => this.router.routerState.root) .subscribe((event) => { this.navigationEnded.unsubscribe(); }); }
UPDATE
this.route.params.subscribe(params => { // reload data by the new id parameter does not work with params // I have to use inside here: route.params['id'] });
params数组中没有id,它的长度为0.
相反,我必须在params订阅中使用route.params [‘id’],但为什么呢?
以上是大佬教程为你收集整理的angular – 如何取消订阅路径解析类中的observable全部内容,希望文章能够帮你解决angular – 如何取消订阅路径解析类中的observable所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。