TypeError: Невозможно прочитать свойство 'File' из неопределенного

Wira Xie спросил: 26 ноября 2017 в 05:02 в: html

Я хочу загрузить файл в хранилище Firebase и сохранить URL в базе данных. Я последовал примеру, который нашел по этой ссылке. У меня есть два разных класса TS. Я получил ошибку в моей функции pushFileToStorage, которая сказала TypeError: Cannot read property 'file' of undefined, когда я нажал кнопку отправки. Может ли кто-нибудь помочь мне решить эту проблему, пожалуйста?

//these are from two different class files
//fileUpload.ts
export class FileUpload {
  name: string;
  Url: string;
  File: File;

  constructor(prdFile: File) {
    this.prdFile = prdFile;
  }
}

//product.ts
export class Product {
  $prdKey: string;
  prdName: string;
  prdImage: string;
  prdDescription: string;
}

//product.service.ts

basePath = '/Product';
pushFileToStorage(fileUpload: FileUpload, Product: Product, progress: {
  percentage: number
}) {
  const storageRef = firebase.storage().ref();
  const uploadTask = storageRef.child(`${this.basePath}/${fileUpload.File.name}`).put(fileUpload.File);

  uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
    (snapshot) => {
      // in progress
      const snap = snapshot as firebase.storage.UploadTaskSnapshot
      progress.percentage = Math.round((snap.bytesTransferred / snap.totalBytes) * 100)
    },
    (error) => {
      // fail
      console.log(error)
    },
    () => {
      // success
      this.productList.push({
        prdName: Product.prdName,
        prdImage: Product.prdImage = fileUpload.Url = uploadTask.snapshot.downloadURL,
        prdDescription: Product.prdDescription,
      })
      this.saveFileData(fileUpload)
    }
  );
}

private saveFileData(fileUpload: FileUpload) {
  this.firebase.list(`${this.basePath}/`).push(fileUpload);
}
//product.component.ts
currentFileUpload: FileUpload;
onSubmit(form: NgForm) {

  this.ProductService.pushFileToStorage(this.currentFileUpload, this.ProductService.selectedProduct, this.progress);
}

0 ответов