属性'substring'在类型'ArrayBuffer'中不存在.ts(2339)

时间:2019-07-25 09:28:56

标签: angular typescript

我将Angular 6更新为Angular8。一切似乎都可以正常工作。除了一件事。

我对此进行了谷歌搜索:属性'substring'在类型'ArrayBuffer'.ts(2339)上不存在。但是没有令人满意的回答

所以我有这个:

 const base64Img = fileReader.result.substring( fileReader.result.indexOf( ',' ) + 1 );

,结果属性如下:

readonly result: string | ArrayBuffer | null;

但是现在我收到此错误:

Property 'substring' does not exist on type 'string | ArrayBuffer'.
  Property 'substring' does not exist on type 'ArrayBuffer'.ts(2339)

所以我的问题是:如何解决这个问题?

谢谢

您不再遇到编译器错误

整个功能如下:

 loadImage( event: Event ) {
    const fileInput = event.target as HTMLInputElement;
    this.selectedFileName = fileInput.files[ 0 ].name;
    if ( fileInput.files[ 0 ] ) {
      const fileReader = new FileReader();
      fileReader.addEventListener( 'load', () => {
        const base64Img = fileReader.result.substring( fileReader.result.indexOf( ',' ) + 1 );
        this.form.controls.picture.setValue( base64Img );
        this.form.controls.uploadPicture.setValue( true );
      } );
      fileReader.readAsDataURL( fileInput.files[ 0 ] );
    } else {
      this.form.controls.picture.setValue( this.profile.picture );
      this.form.controls.uploadPicture.setValue( false );
    }
  }

1 个答案:

答案 0 :(得分:1)

您可以通过将result类型转换为字符串类型来实现此目的。

  const base64Img = (fileReader.result as string).substring((fileReader.result as string).indexOf( ',' ) + 1 );