在angular应用程序中对innobservable使用bind方法来访问依赖项



我有一个关于干净代码和使用可观察性的最佳实践的问题。我创建了函数"loadAllSubstancesFromBackend",它返回一个可观察的,使用angular的httpClient从后端获取所有数据。还有一个主题,如果物质发生变化,下一个值是什么。我订阅了那个可观察的,并使用switchMap来刷新数据。

// inner observable
private loadAllSubstancesFromBackend(): Observable<ISubstance[]> {
return this.httpClient.get<ISubstanceDTO[]>(`${environment.FOODLIST_API_URL}/substances`)
}
// outer observable
this.substancesChanged
.pipe(
switchMap(this.loadAllSubstancesFromBackend.bind(this))
)
.subscribe();
constructor(private readonly httpClient: HttpClient) {}

我的问题是,是否有任何方法可以消除内部可观察对象上的.bind((。就像使内部可观察的依赖性查找本身摆脱了"依赖"一样;这个";。

请告诉我,如果我错过了任何重新评分的社区规则。

致以最良好的问候,Steffen

通常,您会订阅服务调用(返回一个可观察的(,然后将该订阅映射到一个主题。

# Shorthand
this.loadAllSubstancesFromBackend().subscribe(this.substancesChanged);
# Manually
this.loadAllSubstancesFromBackend().subscribe(
next => this.substancesChanged.next(next),
error => this.substancesChanged.error(error),
() => this.substancesChanged.complete()
);

如果你发布你的整个组件和服务,我可以扩展我的答案。

最新更新