簡體   English   中英

如何在另一個可觀察的Angular 7中返回可觀察的方法

[英]How to return an observable method in another observable Angular 7

在組件服務類中,使用angular7覆蓋base-service get方法。 如果需要映射數據,我想返回映射數據,否則返回原點數據。 這是我的功能:

read(isSelectable:boolean): Observable<IFailureMode> {
  const observable = new Observable<IFailureMode>(subscriber => {
      if (isSelectable) {
        return super.read(filter).subscribe(data=>mapToSelectableModel(data));// Here want to return mapped data
      } else {
        return super.read(filter);//Here want to return origin data
      }
    });
  return observable;
}

如何將super.read(filter)返回為observable.next? 有更有用的方法嗎?

正確答案

如果您只想根據提供的參數將映射應用於super.read ,則應這樣做:

read(isSelectable) {
  return super.read(filter)
    .pipe(map(data => isSelectable ? mapToSelectableModel(data) : data));
}

原始答案(錯誤)

如果我正確理解您的問題,這將是您的一種解決方法:

read(fitler) {
  return of(filter)
    .pipe(
      map(f => {
        if (f.key === 'isSelectable' && f.value === 'true') {
          return super.read(f).pipe(map(data => mapToSelectableModel(data));
        } else {
          return super.read(f);
        }
      })
    );
}

在這種情況下, super調用將有條件地映射

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM