2016-12-13 1 views
2

저는 Angular 2 앱이 있습니다. 사용자가 자르고 이미지를 서버로 업로드 할 수있는 구성 요소가 있습니다. 상위 구성 요소는 src 태그의 이미지를 표시합니다. 업데이트 된 이미지가 업로드되면이 src 태그를 업데이트 할 수 있어야합니다. src 태그의 링크는 항상 동일합니다. 브라우저를 수동으로 새로 고침하면 새로 업로드 된 이미지가 표시됩니다.Angular2 업데이트 이미지 [src] 서버 업로드 후

여기 내 HTML 이미지가 있습니다. URL은

<imageUploadCropper [postUrl]="postimageProfileUrl"></imageUploadCropper> 

이미지 업로드 컴포넌트

그래서 같은 이미지를 업로드합니다 ...

<img [src]="url" /> 

부모 구성 요소는과 같이 이미지 업로드 구성 요소를 호스팅하는 ... 구성 요소에 정의되어 있습니다 ...

const formData = new FormData(); 
    formData.append("uploadedImage", this.data.image); 

    this._http.post(this.postUrl, formData, { headers: headers }) 
     .subscribe(); 

이미지를 각도 2로 다시로드하려면 어떻게해야합니까? 방금 ​​페이지/경로를 새로 고치거나 다른 방법으로 다시로드해야합니까? 어떻게 영역을 사용하면 도움이 될까요?

+1

각도 문제가 아닙니다. 그것의 캐시 문제. 버전을 허용하도록 URL 형식을 변경하거나'? '를 추가하면 파일 버전 다음에 url의 끝에 추가됩니다. –

답변

9

src을 다시로드해야합니다. 솔루션 중 하나는 임의의 문자열을 URL 끝에 추가 할 수 있습니다.

this._http.post(this.postUrl, formData, { headers: headers }) 
    .subscribe(() => this.url += '?random+\=' + Math.random()); 
+0

이처럼 캐시 차단기를 사용하려고 생각했지만 깨끗한 ng2 방식이 있었으면합니다. 그래서 URL에 추가하지 않고 이미지 요소를 새로 고칠 수있는 방법이 없습니까? –

+0

캐시 바스트는 앵귤러 2와 아무런 관련이 없습니다. 단지 "웹 것"입니다. 대안은 이미지 자체를 가져 와서 base64로 인코딩하고 base64 데이터로 소스를 업데이트하는 것일 수 있습니다. –

+0

아이디어를 제공해 주셔서 감사합니다. 그것은 내가 의심했던 것이다. 나는 그걸 가지고 노는 시간을 가질 것이며, 내가 무엇을 생각해 낼 수 있는지 보게 될 것이다. –