我具有带有Observable的此功能,因此可以使用文件的内容。
readDocument(fileChangeEvent: Event) {
return new Observable(obs=>{
const file = (fileChangeEvent.target as HTMLInputElement).files[0];
let fileReader = new FileReader();
fileReader.onload = (e) => {
obs.next(fileReader.result);
}
fileReader.readAsText(file);
})
}
我使用此函数将csv文件的内容作为字符串获取。
this.readDocument(data).subscribe(documentvalue=>{
var teststring = documentvalue;
})
我的问题是,如果我然后尝试使用字符串(在我的示例中为highcharts):
this.readDocument(data).subscribe(documentvalue=>{
self.chartOptions.data.csv = documentvalue;
})
我收到以下错误:
不能将“订阅”类型分配给“字符串”类型。
如何从订阅/可观察值中获取纯String值?
我得到的错误是Type '{}' is not assignable to type 'string'
,它比您得到的错误更有意义。
由于可观察对象中没有类型信息,因此默认情况下会认为可观察对象会发出空对象{}
。不能将其分配给self.chartOptions.data.csv
哪个字符串。要解决此问题,您需要为可观察对象显式指定类型参数,并确保它发出字符串。这是修复此问题的代码:
return new Observable<string>(obs=>{
const file = (fileChangeEvent.target as HTMLInputElement).files[0];
let fileReader = new FileReader();
fileReader.onload = (e) => {
obs.next(fileReader.result as string);
}
fileReader.readAsText(file);
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句