модель выглядит ниже
export class FileQueueObject {
public file: any; // used any because selected file contain.
public status: FileQueueStatus = FileQueueStatus.Pending;
public progress = 0;
public request: Subscription = null;
public response: HttpResponse<object> | HttpErrorResponse = null;
constructor(file: any) {
this.file = file;
}
// statuses
public isPending = () => this.status === FileQueueStatus.Pending;
public isSuccess = () => this.status === FileQueueStatus.Success;
public isError = () => this.status === FileQueueStatus.Error;
public inProgress = () => this.status === FileQueueStatus.Progress;
public isUploadable = () => this.status === FileQueueStatus.Pending || this.status === FileQueueStatus.Error;
}
TS
queue: Observable<FileQueueObject[]>;
Код похож на ниже
2 Вопрос:
чего я хочу достичьis,
я добавляю файл при событии изменения =>
var files = this.fileInput.nativeElement.files
const queueObj = new FileQueueObject(file);
1: - теперь при выборе файла, если в очереди уже есть один файл, то я хочу отобразить проверку как это (справатеперь, даже если я не выбрал какой-либо файл, это проверка по огню, я не уверен, почему)
validate(file: File): boolean {
// check if file queue already have one record.
if (this.queue.pipe(map((items) => items.length > 0))) {
alert('can only 1 file for uploading');
return false;
}
return true;
}
2 = при удалении кнопки - хотите удалить файл из наблюдаемой очереди.(кажется, не работает)
пожалуйста, проверьте стекблиц здесь