从可观察到的字符串值

我具有带有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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章