错误,引用推送失败:第一个参数包含属性中的未定义



我是Firebase数据库的新手,我目前正在尝试将数据推送到我的Firebase数据库中,但遇到了这样的错误Error: Reference.push failed: first argument contains undefined in property 'Product.prdName'

//insert data function in service.ts
insertProduct(Product: Product) {
  this.productList.push({
    prdName: Product.prdName,
    prdCat: Product.prdCat,
    prdSup: Product.prdSup,
  });
}
//onsubmit function in component.ts  
productList: Product[];
constructor(private productService: ProductService) {}
onSubmit(form: NgForm) {
  if (form.value.$key == null) {
    this.productService.insertProduct(form.value);
  } else {
    this.productService.updateProduct(form.value);
  }
  this.resetForm(form);
}
//class.ts
export class Product {
  $key: string;
  prdName: string;
  prdCat: string; //category
  prdSup: string; //supplier
}

<!--form snipped-->
<form #productForm="ngForm" (ngSubmit)="onSubmit(productForm)">
  <input type="hidden" name="$key" #$key="ngModel" [(ngModel)]="productService.selectedProduct.$key">
  
  <div class="form-group">
    <label>Product Name</label>
    <input class="form-control" name="name" #name="ngModel" [(ngModel)]="productService.selectedProduct.prdName" placeholder="Full Name">
  </div>
  <div class="form-group">
    <button type="submit" class="btn btn-primary" (onclick)="">Submit</button> 
  </div>
</form>

有人可以帮我吗?

如果需要更多片段,请告诉我。提前谢谢。

你正在传递onSubmit(productForm),所以你会得到这样的输出

{
  $key : value of productService.selectedProduct.$key
  name : value of productService.selectedProduct.prdName
}

你能做的是

任一更改

input name属性的值与类相同Productname='name' name='prdName'

this.productService.insertProduct(form.value);

this.productService.insertProduct(this.productService.selectedProduct);

最新更新