angular - 过滤 BehaviourSubject.asObservable() 问题
问题描述
我正在通过 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();
}
我究竟做错了什么?
解决方案
我怀疑您需要订阅从 getFilteredCars() 方法返回的 observable。
carService.getFilteredCars().subscribe(data=>this.cars = data);
推荐阅读
- javascript - 是否可以在指定的日期和时间通过网络插座触发 GPIO 引脚?
- html - 顶部栏不在顶部
- ruby-on-rails - 录音机,如 Rails 中的 whatsapp
- python - 在一定范围内找到有间隙的子列表
- laravel-5 - Laravel blade echo the value doesn't work
- javascript - document.getElementById(...) 在 Chrome 中为 null,但适用于旧浏览器,如旧 IE
- android - Android Studio 根据谷歌文档设置变量名
- postgresql-9.3 - 我的 Postgres 查询无法正常工作
- angular - 如何以角度在组件之间传递数据
- qnamaker - 如何使用 QnA Maker API v4.0 更新现有知识库?