Проблема с фильтрацией BehaviourSubject.asObservable () - PullRequest
0 голосов
/ 17 октября 2018

Я загружаю данные через 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();
    }

Что я делаю не так?

1 Ответ

0 голосов
/ 17 октября 2018

Я подозреваю, что вам нужно подписаться на наблюдаемое, возвращаемое из вашего метода getFilteredCars ().

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