2016-07-01 2 views
0

RC4 및 "@ angle/router": "3.0.0-beta.2"를 사용하는 Angular2 클라이언트가 있습니다. 응용 프로그램이 처음로드 될 때 (동일한 도메인에 대한) webApi 호출이 구성 데이터를 가져옵니다. 이것은 중요합니다 - webApi (및 다른 것들)에 대한 URL을 포함합니다.Angular2 - 라우팅 전에 설정 대기

로그인이 완료 될 때까지 로그인이나 페이지를 표시하지 않아야합니다. 이것은 다음과 같이 완료 될 때까지 나는 내용을 숨기는 시도 :

<div *ngIf="IsConfigReady"> 
    <router-outlet></router-outlet> 
</div> 

하지만 라우터 콘센트를 숨기면 내가 라우팅 오류를 얻을 :

Error: Cannot find primary outlet to load 'MyComponent'

사용자가 URL에 많은 구성 요소에 갈 수

그 직접 타겟팅합니다. 모든 개별 구성 요소에 ngif를 넣을 수는 없습니다.

라우팅이 시작되기 전에 설정이 완료 될 때까지 기다리는 방법이 있어야합니다. CanActive를 사용하면 라우팅을 중지 할 수 있지만 일단 앱이 준비되면 계속 진행하지 않습니다.

어쩌면 다른 방식으로 생각할 필요가 있습니다. 아이디어가 있으십니까?

답변

0

이렇게하려면 canActivate guard를 사용해야합니다. CanActivate는

state.url 

가게 일부 서비스의 URL과 같은 state에서 URL을 추출 할 수 있습니다 서명을

canActivate(
    // Not using but worth knowing about 
    next: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot 
) 

을 다음있다. 구성로드가 반환 된 후 다시 양식 서비스에 액세스 할 수있는 적절한 URL로 이동합니다.

관련 문제