在我看来,有一个与控制器的一个功能链接的输入文件
<input type="file" style="display: none;" (change)="importXML($event)">
此函数调用服务中的函数,该服务假设将我的xml文件转换为json
importXML(event): void {
const obj = this.myService.convertXML2Json(event.target);
}
在服务功能中,XML文件在FileReader中读取然后转换 到文件阅读器的onloadend部分的xml
convertXML2Json(event): any {
const file = event.files[0];
const fr = new FileReader();
fr.onloadend = e => xmltoJsonFunction(fr.result);
fr.readAsText(file)
}
如何在onloadend中检索转换后的json结果,以便在Angular控制器中使用它,特别是使用Promise?或者我应该使用setTimeout?
答案 0 :(得分:0)
您的结果不在fr
对象内。回调函数中的参数e
具有读取文件的结果:
fr.onloadevent = e => xmltoJsonFunction(e);
答案 1 :(得分:0)
实际上,如果我只在控制器部分编码,我发现了一个修复:
public XMLParsed;
importXML(event): void {
const file = event.target.files[0];
const fr = new FileReader();
fr.onloadend = (e: any) => {
this.XMLParsed = xmlToJSON(e.target.result);
};
fr.readAsText(file);