我试图通过BehaviorSubject将服务的日期共享给另一个组件,但出现了上述错误。
public content = new BehaviorSubject<any>(this.selectedvalue);
public share = this.content.asObservable();
selectedvalue: Meal[] = [];
loadSubCategoriesFood(name: string): Observable<{ meals: Meal[] }> {
return this.http
.get<{ meals: Meal[] }>(
this.recipies.listofsubcategories + 'filter.php?i=' + name
)
.pipe(
tap((resultcategory) => {
this.selectedvalue = resultcategory?.meals;
})
);
}
我的另一个组件:
这就是我订阅服务的地方。
export class CategorypageComponent implements OnInit {
constructor(public categoryfood: HomepageService) {}
ngOnInit(): void {
const getSharedValue = this.categoryfood.share.subscribe((x) =>
console.log(x)
);
}
}
您只是将selectedvalue
传递为BehaviourSubject
一次。BehaviourSubject
将看不到对selectedValue
的更新。
使用.next()
方法将更改推送到BehaviourSubject
。
public content = new BehaviorSubject<Meal[]>([]);
public share = this.content.asObservable();
loadSubCategoriesFood(name: string): Observable<{ meals: Meal[] }> {
return this.http
.get<{ meals: Meal[] }>(
this.recipies.listofsubcategories + 'filter.php?i=' + name
)
.pipe(
tap((resultcategory) => {
this.content.next(resultcategory?.meals)
})
);
}
}
在这种情况下,您不再需要selectedvalue
。