我正在尝试编辑产品表单,尝试使用属性“ take”时出现错误。 更具体地说,我得到:“类型'AngularFireObject <{}>'不存在属性'take'。”
import { Component, OnInit } from '@angular/core';
import { CategoryService } from 'src/app/category.service';
import { ProductService } from 'src/app/product.service';
import { Router, ActivatedRoute } from '@angular/router';
import 'rxjs/add/operator/take';
@Component({
selector: 'app-product-form',
templateUrl: './product-form.component.html',
styleUrls: ['./product-form.component.css']
})
export class ProductFormComponent implements OnInit {
categories$;
product = {};
//productService: any;
constructor(
private router: Router,
private route: ActivatedRoute,
//private categoryService: CategoryService,
private productService: ProductService) {
//this.categories$ = categoryService.getCategories()
let id = this.route.snapshot.paramMap.get('id');
if (id) this.productService.get(id).take(1).subscribe(p => this.product = p);
//if (id) this.productService.get(id).valueChanges().subscribe(p => this.product = p);
}
save(product){
this.productService.create(product);
this.router.navigate(['admin/products']);
//console.log(product);
}
ngOnInit() {
}
}
答案 0 :(得分:1)
如果您的this.productService.get(id)
方法返回一个Observable,则必须用pipe()函数将运算符括起来:
this.productService.get(id).pipe(take(1)).subscribe(p => this.product = p);