订阅路由以获取可观察性并在一个订阅中对其进行处理

时间:2018-06-28 05:59:29

标签: angular rxjs

我有以下这段代码,它从路径中获取信息,初始化一个可观察对象,并对该可观察对象进行一些操作:

export class ThemesEditComponent implements OnInit {

  themeId: string;
  theme$: Observable<Theme>;
  theme: Theme;

ngOnInit() {
    this.route.paramMap
      .subscribe(
        (param: any) => {
          this.themeId = param.get('themeId');

          this.theme$ = this.sectionStoreService.themes
            .pipe(
              map(themes => themes.find(item => item._id === this.themeId))
            );

          this.theme$
            .subscribe(
              theme => {
                this.theme = theme;
            });

          this.setFormValue(this.theme);
      });
  }

因为此代码中有两个订阅,所以我想知道是否有编写它的正确方法。我尝试使用switchMap运算符执行此操作,但未成功。我想我没有好的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用 try { InputStream io = TestngListener.sftp.get(path); rd = new BufferedReader(new InputStreamReader(io)); } catch (Exception e) { e.printStackTrace(); } 。我认为{"a": "value1", "b": "value2", "c": "value3"} 工作不正确。因为它是在设置mergeMap之前触发的。您可以尝试以下方法:

this.setFormValue