2017-11-11 4 views
0

본문에 비동기 함수를 사용하여 ui-router 전환 후크를 등록하려면 어떻게해야합니까? 비동기 결과를 기반으로 하위 상태로 리디렉션해야합니다.Angular2 UI-Router, async transitionService.onBefore

router.transitionService.onBefore({to: 'app'}, transition => { 
    let dashboardService: DashboardService = transition.injector().get(DashboardService); 
    dashboardService.getList().subscribe((list: Array<Dashboard>) => { 
     if (list.length) { 
      return transition.router.stateService.target('app.dashboard', {id: list[0].id}); 
     } 
    }); 
}); 

콜백이 반환 값이 TransitionHookFn있을 것으로 기대 : 콜백은 어떤 값을 반환하지 않기 때문에, 작동하지 않습니다 내 코드입니다. 나는 Promise와 Subject를 반환하려고 시도했으나 오류가 발생했습니다.

답변

0

답을 직접 찾았습니다. 관찰 할 수있는 것이 약속으로 변해야합니다 :

router.transitionService.onBefore({to: 'app'}, transition => { 
    let dashboardService: DashboardService = transition.injector().get(DashboardService); 

    return dashboardService.getList().toPromise().then((list: Array<Dashboard>) => { 
     if (list.length) { 
      return transition.router.stateService.target('app.dashboard', {id: list[0].id}); 
     } 
    }) 
});