首页 > 解决方案 > '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'。错误信息...谢谢!

标签: angular

解决方案


你可以尝试这样的事情:

const arr = new Uint8Array(fileReader.result as ArrayBuffer).subarray(0,4);

推荐阅读