Reputation: 839
I'm new with firebase database and I'm currently trying to push data into my firebase database, but got an error like this 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>
Can somebody help me, please?
please let me know if more snippets are needed. Thanks in advance.
Upvotes: 0
Views: 8240
Reputation: 58593
You are passing onSubmit(productForm)
, so you will get output like
{
$key : value of productService.selectedProduct.$key
name : value of productService.selectedProduct.prdName
}
What you can do is
EITHER CHANGE
Value of name
property of input
to same as Product
class like name='name'
to name='prdName'
OR
this.productService.insertProduct(form.value);
to
this.productService.insertProduct(this.productService.selectedProduct);
Upvotes: 1