Angular-错误TS2339:类型“ AngularFireObject <{}>”上不存在属性“ take”

时间:2019-04-27 19:24:06

标签: angular firebase rxjs angularfire2

我正在尝试编辑产品表单,尝试使用属性“ 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() {
  }

}

1 个答案:

答案 0 :(得分:1)

如果您的this.productService.get(id)方法返回一个Observable,则必须用pipe()函数将运算符括起来:

this.productService.get(id).pipe(take(1)).subscribe(p => this.product = p);