forkJoin не работает с динамическим массивом URL-адресов и объектов POST в Angular 6 - PullRequest
1 голос
/ 08 марта 2019

Вот мой технический стек

Угловой - 6.1.2

TypeScript - 2.7.2

rxjs - 6.2.2

Воткод для моего метода forkJoin в Angular.Почтовые запросы вызываются в бэкэнде.Но параметры не передаются.

  import { Observable } from 'rxjs';
  import 'rxjs/add/observable/forkJoin';

        reqArray = [];

        for (let i = 0; i < this.array.length; i++) {

            if(array[i]==true)
            {
                let obj = { name: 'Test', status: array[i] };

                this.reqArray.push(this.http.post(url, { params: obj }).pipe(map((res: Response) => res)));

            }

      }




forkJoin(this.reqArray).subscribe(
       data => {


            console.log(data);

       },
       err => console.error(err)
    );

Опробовал и этот подход, но я получил тот же ответ.

    Observable.forkJoin(this.reqArray).subscribe(
       data => {

             console.log(data);

       },
       err => console.error(err)
    );

Когда я передаю данные без цикла for статическим способом, он отлично работает.

    forkJoin(
        this.http.get(url, { params: obj }).pipe(map((res: Response) => res)),
        this.http.get(url, { params: obj2 }).pipe(map((res: Response) => res)),
        this.http.get(url, { params: obj3 }).pipe(map((res: Response) => res)),
        this.http.get(url, { params: obj4 }).pipe(map((res: Response) => res))

    ).subscribe(
        data => {

            console.log(data);

        });

Но в моем случае мне пришлось бы создать массив URL-адресов на основе нескольких условий, поэтому его статическое добавление невозможно.

Что я должен изменить в своем коде?

1 Ответ

2 голосов
/ 08 марта 2019

нужно выкладывать массив

forkJoin(...this.reqArray)
...