我有此功能,可以将文件转换为显示文件的base64。
ConvertFileToAddress(event): string {
let localAddress: any;
const reader = new FileReader();
reader.readAsDataURL(event.target['files'][0]);
reader.onload = (e) => {
localAddress = e.target['result'];
};
return localAddress;
}
而不是使用像这样的组件:
this.coverSrc=this.localization.ConvertFileToAddress(event);
但是当登录到控制台时,this.coverSrc
会向我显示undefined
。
当我登录此支架时:
reader.onload = (e) => {
localAddress = e.target['result'];
};
它显示了base64
的值,但是当我在localAddress
之外登录bracket
时,它显示了undefined
。
如何返回函数的值并在其他组件中使用它?
答案 0 :(得分:2)
您可以通过Promises或callback进行处理。
-使用回叫
ConvertFileToAddress(event, callback): string {
const reader = new FileReader();
reader.readAsDataURL(event.target['files'][0]);
reader.onload = callback;
}
this.localization.ConvertFileToAddress(event, (e) => {
this.coverSrc = e.target['result'];
});
-使用承诺
ConvertFileToAddress(event): string {
return new Promise((resolve, reject) {
const reader = new FileReader();
reader.readAsDataURL(event.target['files'][0]);
reader.onload = (e) => {
resolve(e.target['result']);
};
});
}
this.localization.ConvertFileToAddress(event).then((data) => {
this.coverSrc = data;
});
您也可以将Observable设为可观察-您可以在此处查看示例-https://jasonwatmore.com/post/2018/06/25/angular-6-communicating-between-components-with-observable-subject