2016-07-15 1 views
0

나는이 코드를 사용하여 경로 변경을 강요합니다 (버튼 클릭에 해당). 전체 방법은 다음과 같습니다각도 2.0.0-beta.2 라우터가 원치 않는 '?' 경로로 접미사

submit(){ 
    this.store.dispatch({type: MasterScreenerActions.SUBMIT}); 
    this.router.navigateByUrl('master-screener-results'); 
} 

지금, 이것은 잘 작동하지만 브라우저에 반격하고 다시 submit 버튼을 클릭하면 브라우저가 너무 좋아로 이동합니다 : Navigated to http://localhost:4200/master-screener-results?합니다. 마지막에 ?에 주목하십시오. 그러나 브라우저가 결국 적절한 URL, 즉 /master-screener-results에 도착한 후에 응용 프로그램을 다시로드 한 후에 문제가됩니다.이 경로는 다양한 양식을 채운 후에 활성화되거나 연결되도록 의도 된 것이므로 master-screener을 암시합니다.

왜이 동작이 발생하며 어떻게 발생합니까? master-screener-results은 하위 구성 요소입니까? 어떤 유형의 경비를 수행해야합니까? 어디서부터 시작해야할지에 대한 조언이나 조언은 대단히 감사하겠습니다.

편집 : 나는 또한 내 경로에서 접미사를 ?null=on으로 끝내는 것을 끝내고있다.

EDIT2 :이 동작은 템플릿이, 이전에로드 된 경우에만 즉, zone.js:101 XHR finished loading: GET "http://localhost:4200/app/master-screener-results/master-screener-results.component.html".는, 다음 호출 내가 지금 당신과 함께 매우 같은 문제가 없었다 Navigated to http://localhost:4200/master-screener-results?

답변

1

가 발생합니다 경우 발생하는 것 같습니다. 나는이 <form> 내부 <button>을 클릭하면에만 발생 것을 깨달았다 디버깅 후

submitForm() { 
    // do something 
    this.router.navigate(["../home"], {relativeTo: this.r}); 
} 

만이 아니라 <a>을 클릭에;

<form> 
    <input ...> 
    <button (click)="submitForm()">Submit</button> 
</form> 

및 코드 : 내가 한 것은이 같은했다 button의 기본 동작이 방해되지 않는다는 결론을 내릴 수 있습니다. 이 변경으로 인해 나를 도울 수 있습니다.

submitForm() { 
    // do something 
    this.router.navigate(["../home"], {relativeTo: this.r}); 
    return false; // prevent default action 
}