Валидаторы типа Angular Mime возвращают неверную информацию - PullRequest
0 голосов
/ 28 мая 2019

У меня проблема с валидатором Video MIME TYPE,

export const mimeTypeVid = (
  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', () => {

        let isValid = false;

        console.log('file type '+file.type);
        switch (file.type) {
          case 'video/mp4':
            isValid = true;

            break;
          case 'video/mp4v-es':
            isValid = true;

            break;
          default:
            isValid = false; 
            break;
        }
        console.log("Mime Vid Validators"+ isValid)
        if (isValid) {

          observer.next(null);
        } else {
          observer.next({ invalidMimeType: true });
        }
        observer.complete();
      });
      fileReader.readAsArrayBuffer(file);
    }
  );

  return frObs;
};

IsValid true с mp4 vids в этом Валидаторе, но

когда я пытаюсь получить действительную форму:

if(this.TestForm.get('video').valid)

Возвращает ложное 9 раз из 10.

У меня точно такие же валидаторы с типом изображения, и он хорошо работает.

Кто-то может объяснить мне, почему он так себя ведет?

Спасибо всем за помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...