2017-09-12 2 views
1

URL로 리디렉션하고 다시로드해야하는 특수한 조건이 있습니다.각형 라우터 탐색 및 다시로드는 구성 요소를 한 번 렌더링하지만 두 번 렌더링해야합니다.

I 라우터에서이 방법을 사용하고 :

this.reload()
this.router.navigateByUrl('login'); 
this.reload(); 

페이지를 다시 강제 각 영역 밖에서 작동 기능이다. 서버에서 오는 일부 자산을 제어 할 수 없으므로 강제로 다시로드해야합니다.

다시로드의 코드는 다음과 같습니다

public reload(): any { 
    return this.zone.runOutsideAngular(() => { 
     location.reload() 
    }); 
} 

문제는 : 내가 처음에 로그인을 탐색하고 다음 페이지가 기본 동작을 다시로드

.

필수 출력 :

단지 구성 요소를 렌더링하지 않고 탐색하고 우리는 우리가 대부분의 사이트에서 로그인 페이지로 리디렉션됩니다 일부 승인되지 않은 URL을 쳤을 때처럼 다시로드합니다.

+0

당신은'navigateByUrl'을 건너 뛰고 윈도우의'location' 속성을 대체 할 수 있습니다 :'location.replace ('myUrl');' – Philipp

+0

더 많은 정보 만 새로 고침하고 경로의 URL도 변경하지 않습니다. – PaladiN

답변

4

누군가 내가하고있는 일에 관심이 있다면 먼저 URL로 이동 한 다음 페이지를 다시로드하여 문제를 해결했습니다.

먼저 수입 Location는 :

import { Location } from "@angular/common"; 

그럼 당신이 기대하는 특정 URL로 이동 go()를 사용합니다.

this.location.go('login'); 

그런 다음 reload 메소드를 사용하여 브라우저를 다시로드하십시오. 다시로드 기능이

this.reload(); 

:

public reload(): any { 
    return this.zone.runOutsideAngular(() => { 
     location.reload() 
    }); 
} 

참고 : 탐색하고 두 번 사용자에게 페이지로드를 표시하지 않고 다시로드하려면

이 방법은 적합합니다.