2
uploadTask가 성공적으로 수행 된 후에 업로드 된 img를 표시하려하지만 비동기 적으로로드되어 있기 때문에보기가 업로드가 완료되기 전에 표시하려고 시도합니다. 각도 2의 Firebase 저장소 - 업로드시 이미지 미리보기
이
은 방법 :upload(value){
let file = value.target.files[0];
let storageRef = firebase.storage().ref('noticias/' + file.name);
let uploadTask = storageRef.put(file);
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
function(snapshot) {
let progress = (snapshot.bytesTransferred/snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
switch (snapshot.state) {
case firebase.storage.TaskState.PAUSED: // or 'paused'
console.log('Upload is paused');
break;
case firebase.storage.TaskState.RUNNING: // or 'running'
console.log('Upload is running');
break;
}
}, function(error) {
switch (error) {
case 'storage/unauthorized':
break;
case 'storage/canceled':
break;
case 'storage/unknown':
break;
}
}, function() {
// Upload completed successfully, now we can get the download URL
let downloadURL = uploadTask.snapshot.downloadURL;
console.log('Upload done!');
});
storageRef.getDownloadURL().then(url => this.imgUrl = url);
this.uploadedImg = true;
}
그리고 이것은이다 : 방법의
<img *ngIf="uploadedImg" [src]="imgUrl" />
마지막 두 줄은 부하 너무 일찍 방법들입니다. 나는 또한 그것들을 성공 함수 내부로 옮기려고 노력했다. 문제는 내가 거기로 이동하면 this
더 이상 클래스를 말하기 때문에 내가보기에서 값을 변경할 수 없다는 것입니다.
최악의 부분은 이미이 패턴을 알고 있다는 것입니다. 나는 방금 JS를 배우기에서 너무 일찍 Angular에 가기 위해 뛰어 올랐다. .. 고마워! – cerealex