2017-03-20 6 views

답변

1

확실히 당신은 do 인터셉터로 Observable을 구독하고 있지 않습니다. do 인터셉터와 관찰을 돌려 :

post(url, data):Observable<Response> { 
    let headers = new Headers(); 
    this.createAuthorizationHeader(headers); 
    var response = this.http.post("\\services" + url, data, { 
     headers: headers 
    }); 

    return this.handleResponse(response); 
} 

private handleResponse(responseO : Observable<Response>) { 
    return responseO.do(response => { 
     if (response.url.includes("LoginPage.html")) { 
      window.location.replace("../LoginPage.html"); 
     } 
    }); 
} 
1

을 당신의 관찰 스트림 데이터를 조작하려면, 대신 do를 사용하여, 당신은 아마 map를 사용해야합니다. 그것은 스트림을 조작하는 '반응적인'방법입니다.

post(url, data):Observable<Response> { 
    let headers = new Headers(); 
    this.createAuthorizationHeader(headers); 
    var response = this.http.post("\\services" + url, data, { 
     headers: headers 
    }); 

    return response.map(res => handleResponse(res)); 
} 

private handleResponse(responseO : Response) : Response { 
    if (response.url.includes("LoginPage.html")) { 
     window.location.replace("../LoginPage.html"); 
    } 

    return responseO; 
} 

나는 또한 응용 프로그램을 다시 시작하는 것을 의미하는 새로 고침 페이지를 강제하기 때문에, 각도 2 응용 프로그램에서 window.location.replace을 사용하여에 추천하고 싶습니다. 각도 라우터를 사용하여 경로를 변경하면 탐색 할 때 앱이로드 될 때까지 기다릴 필요가 없습니다.