如果没有找到数据,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()正在执行的操作:
原文链接:https://www.f2er.com/angularjs/141057.htmlresolve(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() }