2017-02-23 3 views
0

Ich möchte zu einer anderen Seite navigieren, wenn das Suchergebnis nur ein Element ist (wenn reportId = 1), wo der Benutzer einen Klick speichern kann. Hier ist mein Resolver-Code.Angular2 Routing zu einer Seite basierend auf dem Suchergebnis

export class SearchResultsResolver implements Resolve<Report[]> { 
     constructor(private searchService: SearchService, private router: Router) {} 

    resolve(route: ActivatedRouteSnapshot, 
     state: RouterStateSnapshot): Observable<Report[]> { 
     let reportId = route.params['reportId']; 

     return this.searchService.getReports(reportId); 

     console.log('reportid', reportId); 
    } 
} 

Antwort

0

Sie einfach eine Kombination aus flatMap, Observer.if und den router.navigate im Snippet verwenden kann unter

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Array<Report>> { 
    let reportId = route.params['reportId']; 

    return this.searchService.getReports(reportId) 
.flatMap(reports => Observable.if(() => reports && reports.length > 1, 
     Observable.of(reports), 
     this._router.navigate(['/otherRoute'])) 
); 
wie gezeigt, dass zu tun bekommen
Verwandte Themen