我有一个Angular 4应用程序,我在其中读取图像并试图将base64字符串传递给另一个变量-但是由于它的异步特性,我遇到了问题-image.src
为空,因此该值已正确传递给图像对象?
ngAfterViewInit(): void {
let image = new Image();
var promise = this.getBase64(fileObject, this.processImage());
promise.then(function(base64) {
console.log(base64); // outputs string e.g 'data:image/jpeg;base64,........'
});
image.src = base64; // how to get base64 string into image.src var here??
}
/**
* get base64 string from supplied file object
*/
public getBase64(file, onLoadCallback) {
return new Promise(function(resolve, reject) {
var reader = new FileReader();
reader.onload = function() { resolve(reader.result); };
reader.onerror = reject;
reader.readAsDataURL(file);
});
}
public processImage() {
}
答案 0 :(得分:4)
您遇到的问题是base64
是可变的,范围是.then()
的回调函数。要使其正确,只需执行以下操作:
ngAfterViewInit(): void {
let image = new Image();
var promise = this.getBase64(fileObject, this.processImage());
promise.then(function(base64) { // base64 variable is scoped to this function only.
console.log(base64); // outputs string e.g 'data:image/jpeg;base64,........'
image.src = base64;
});
}