2

URLバーからルートとクエリを取得しようとしています。以下のコードは、CodeWithMosh によるチュートリアルからのものです。CombineLatest メソッドでコンパイル エラーが発生します。

エラーは次のとおりです。

(プロパティ) paramMap: Observable 型の引数 '{ paramMap: Observable; queryParamMap: 観察可能; }' は、タイプ 'ObservableInput' のパラメーターに割り当てられません。
オブジェクト リテラルは既知のプロパティのみを指定でき、「paramMap」はタイプ「ObservableInput」に存在しません

私はAngularの初心者で、エラーの意味がわかりません。このスタックオーバーフローの回答に従ってみましたが、それでもエラーが発生します。ありがとうございました。

完全なコードは次のとおりです。

    import { ActivatedRoute } from '@angular/router';
    import { GithubFollowersService } from './../services/github-followers.service';
    import { Component, OnInit } from '@angular/core';
    import 'rxjs/add/Observable/combineLatest';
    import { Observable } from 'rxjs/internal/Observable';
    import { combineLatest } from 'rxjs';

    @Component({
      selector: 'github-followers',
      templateUrl: './github-followers.component.html',
      styleUrls: ['./github-followers.component.css']
    })
    export class GithubFollowersComponent implements OnInit {
      followers : any[];

      constructor(
        private route: ActivatedRoute,
        private service : GithubFollowersService) { }

      ngOnInit() {
        const paramMap = this.route.paramMap;
        const queryParamMap = this.route.queryParamMap;

        combineLatest({
          paramMap, // error here
          queryParamMap
        })
        .subscribe(combined => {
          let id = combined[0].get('id');//the 0 means the 1st 1 which is paramMap from above
          let page = combined[1].get('page');

          this.service.getAll().subscribe(followers => this.followers = followers);
        });


      }

    }
4

3 に答える 3

1

forkJoin複数のサブスクリプションが完了したときに特定のコードを実行することを探しています。これを行うための疑似ロジックは次のとおりです。

forkJoin(
  paramMap.pipe(
    tap(res => {
      allParams["param1"] = res.get("param1");
    })
  ),
  queryParamMap.pipe(
    tap(res => {
      allParams["param1"] = res.get("param2");
    })
  )
).subscribe(res => {
  //call your service
});
于 2019-09-27T11:03:39.377 に答える