【问题标题】:Filtering BehaviourSubject.asObservable() problem过滤 BehaviourSubject.asObservable() 问题
【发布时间】:2018-10-17 13:57:04
【问题描述】:

我正在通过 HttpClient 加载数据并将它们发布为 BehaviourSubject:

    export interface Car {
      id:number;
      make: string;
      status: number;
    }

在服务中,我通过 API 端点加载数据:

private cars = new BehaviorSubject<Car[]>([]);

constructor( private http: HttpClient) { 
    this.loadCars();
  }

loadCars() {
    this.http.get<Car[]>('/api/cars')
    .subscribe((cars) => this.cars.next(cars));
  }

getFilteredCars() {
   return this.cars.asObservable()
    .pipe(
      map( (cars) => cars.filter( car => car.status === 1)
      )
      );
}

如您所见,我想获取所有状态为 1 的汽车。 当我从我的组件中调用它时,我什么也没得到:

Component

cars: Observable<Car[]>;

  constructor(private carService: CarService) { 
    this.cars = carService.getFilteredCars();
  }

我得到未过滤的数据没有任何问题如果我返回未过滤的 BehaviourSubject:

getFilteredCars() {
       return this.cars.asObservable();
    }

我做错了什么?

【问题讨论】:

  • 您需要致电subscribe()
  • 天哪,我怎么会错过这个:)。谢谢,解决了我的问题

标签: angular rxjs behaviorsubject


【解决方案1】:

我怀疑您需要订阅从 getFilteredCars() 方法返回的 observable。

carService.getFilteredCars().subscribe(data=>this.cars = data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 2012-03-16
    • 2021-10-09
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多