angular – Resolve Guard:如果没有找到数据,则从路由中解析obs
发布时间:2020-12-17 08:51:12 所属栏目:安全 来源:网络整理
导读:如果没有找到数据,angular.io上的示例中的resolve方法返回一个promise或将应用程序导航到特定路由. resolve(route: ActivatedRouteSnapshot): Promiseany {let id = +route.params['id'];return this.cs.getCrisis(id).then(crisis = { if (crisis) { return
如果没有找到数据,angular.io上的示例中的resolve方法返回一个promise或将应用程序导航到特定路由.
resolve(route: ActivatedRouteSnapshot): Promise<any> { let id = +route.params['id']; return this.cs.getCrisis(id).then(crisis => { if (crisis) { return crisis; } else { // id not found this.router.navigate(['/crisis-center']); return false; } }); } 假设,getCrisis函数返回一个observable: resolve(route: ActivatedRouteSnapshot): Observable<any> { let id = +route.params['id']; return this.cs.getCrisis(id).take(1) } 在可观察的情况下.我怎么知道,没有任何回报,因为我正在处理流?在resolve函数中处理这种情况的最佳模式是什么? 我知道,我可以从组件中使用router.navigate方法,但是想要正确使用路由器解析防护.
您可能需要添加.first()(需要导入),因为当前路由器等待observable完成,并且可能不会发生,具体取决于getCrisis()正在执行的操作:
resolve(route: ActivatedRouteSnapshot): Observable<any> { let id = +route.params['id']; return this.cs.getCrisis(id) .map(data => { if(data) { return crisis; } else { this.router.navigate(['/crisis-center']); return false; } }) .first() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |