【问题标题】:using bind method on innerobserable in an angular app for accessing dependencies在 Angular 应用程序中对 innerobserable 使用 bind 方法来访问依赖项
【发布时间】:2021-04-10 19:36:21
【问题描述】:

我有一个关于使用 observables 的干净代码和最佳实践的问题。 我创建了函数'loadAllSubstancesFromBackend',它返回一个observable,使用angular的httpClient从后端获取所有数据。 还有一个主题,如果物质发生变化,则该主题将被重视。我订阅了那个 observable 并使用 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) {}

我的问题是,是否有任何方法可以摆脱内部 observable 上的这个 .bind() 。就像在内部可观察对象中进行依赖查找一样摆脱“this”。

请告诉我,如果我遗漏了任何重新评定社区规则的内容。

最好的问候, 史蒂芬

【问题讨论】:

    标签: angular dependency-injection observable


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 2021-11-30
      • 2019-02-14
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多