2016-08-21 2 views
4

사용자가 브라우저에서 뒤로 또는 앞으로 버튼을 클릭하면 경로 변경을 취소하고 싶습니다. 은 지금까지 나는 아래의 코드와 같이 경로 변경 이벤트를 캡처 관리 :각도 2의 경로 변경을 취소하는 방법은 무엇입니까?

constructor(router:Router) { 
    router.events 
    .subscribe((event:Event) => { 
     // some logic. 
     // event.preventDefault(); ? 
    }); 
} 

나는 이벤트 기본을 중지하는 경우에 어떤 방법/멤버를 찾을 수 없습니다. 내가 URL을 수정하려면 location.go()을 사용하기 때문에 의도 한대로 등록 된 라우트 구성이 없기 때문에 콘솔에서이 오류가 발생합니다.

Error: Uncaught (in promise): Error: Cannot match any routes: 'Some/Url'

경로 변경을 취소하는 방법이 있습니까? 그렇다면 각도가 경로 구성을보고 있지 않습니까?

+0

당신은 수있는이 곳 해결하기 위해, 아래와 같이인가? –

답변

8

라우트를 정의 할 때 canDeactivate 가드를 사용하면 라우트를 변경할 때 논리 작성에 도움이됩니다.

경로 탐색을 계속하거나 거부하려면 해당 경로에서 활성화되어있는 구성 요소 인스턴스에 대한 참조를 가져 와서 속성을 읽어야합니다. 방법의

서명

canDeactivate(component: T, 
    route: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot) : 
    Observable<boolean>|Promise<boolean>|boolean 

당신은 그것에 대해 자세한 내용을보실 수는 here

관련 문제