2016-10-26 3 views
2

내 resolver에서 검사를해야합니다. 괜찮 으면 객체를 다시 할당하고, 그렇지 않으면 observable을 false로 반환합니다. 여기 Angular2 : Resolver에서 객체 반환

내 코드입니다 : (false)를

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
    return this.callApi().subscribe((result) => { 
     if (blabla === true) { 
      return Observable.of(result); 
     } 
     this.router.navigate([ '/' ]); 
     return Observable.of(false); 
    }); 
} 

Observable.of 내가 홈페이지로 이동, 작동하는 것 같다,하지만 Observable.of (결과)에, 나는 결과에 얻지 않는다 내 구성 요소는 ...

당신이 사용할 수있는 결과를 가지고, 당신은 심지어 switchMap 필요하지 않습니다 당신의 도움이

+0

당신은 .subscribe'에 아무것도 반환하지한다()'. 이게 뭐지? – martin

+0

개체가 사용 중지되었는지 확인하고 있습니다.이 경우 메시지가 표시된 홈페이지로 이동합니다. – GuillaumeC

+0

그렇다면 왜 Observable을'.subscribe()'에 넣었습니까? – martin

답변

1

주셔서 감사합니다. 결과와 false를 모두 observables로 변환하지만 직접 반환 할 수 있습니다.

return this.callApi().map(result => (blahblah ? result : false)); 

호출자 내부의 부작용이 가장 좋은 방법이 아닙니다, 당신은 외부를 처리 할 수 ​​

resolve(...).filter(result => !result).subscribe(() => this.router.navigate([ '/' ]));