angular - 'string | 类型的参数 ArrayBuffer' 不能分配给 'ArrayBuffer | 类型的参数 共享数组缓冲区 | 类数组'
问题描述
编译时会生成上述错误消息。这是我的mime-type.validator.ts
文件。
import { AbstractControl } from '@angular/forms';
import { Observable, Observer, of } from 'rxjs';
export const mimeType = (
control: AbstractControl
): Promise<{ [key: string]: any }> | Observable<{ [key: string]: any }> => {
if (typeof(control.value) === 'string') {
return of(null);
}
const file = control.value as File;
const fileReader = new FileReader();
const frObs = Observable.create(
(observer: Observer<{ [key: string]: any }>) => {
fileReader.addEventListener('loadend', () => {
const arr = new Uint8Array(fileReader.result).subarray(0, 4);
let header = '';
let isValid = false;
for (let i = 0; i < arr.length; i++) {
header += arr[i].toString(16);
}
switch (header) {
...
}
if (isValid) {
observer.next(null);
} else {
observer.next({ invalidMimeType: true });
}
observer.complete();
});
fileReader.readAsArrayBuffer(file);
}
);
return frObs;
};
我怎样才能摆脱'类型'字符串'不可分配给类型'ArrayBuffer | 共享数组缓冲区 | ArrayLike'。错误信息...谢谢!
解决方案
你可以尝试这样的事情:
const arr = new Uint8Array(fileReader.result as ArrayBuffer).subarray(0,4);
推荐阅读
- mysql - R:如何从 MySQL 中正确获取特殊字符?
- anaconda - 查询 anaconda 包的目标平台
- powershell - 如何使用powershell将键/输入发送到没有登录用户的正在运行的进程?
- java - 从 URL 下载文件?
- node.js - 理解 fs.writeFileSync(path, data[, options]) Node.js
- python - 将 args 作为单元测试的一部分传递以测试 pyspark 脚本
- javascript - 选中一个复选框时,另一个复选框必须消失
- java - 数据绑定“错误:找不到符号类模型”
- python-3.x - 任务可以使用 APScheduler 重新安排自己吗?
- vb.net - 如何从 OpenFileDialog 获取专辑、艺术家等