我将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 );
}
}
答案 0 :(得分:1)
您可以通过将result
类型转换为字符串类型来实现此目的。
const base64Img = (fileReader.result as string).substring((fileReader.result as string).indexOf( ',' ) + 1 );