У меня проблема с валидатором 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.
У меня точно такие же валидаторы с типом изображения, и он хорошо работает.
Кто-то может объяснить мне, почему он так себя ведет?
Спасибо всем за помощь:)