угловой 6, как объединить ответы из API в один массив - PullRequest
0 голосов
/ 06 июня 2018

здесь я получил два ответа Json, т. Е. Книги и авторов. Я хочу, чтобы эти два ответа были в одном массиве..как хранить this.author и this.booksinfo в одном массиве?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

При желании вы можете использовать forkJoin:

const books = this.http.getbooks();
const authors = this.http.getauthors();

forkJoin([books, authors]).subscribe(response => {
 // response[0] will be req1 response
 // response[1] will be req2 response
})

Другой вариант, указанный в комментариях, использует combineLatest:

combineLatest(books, authors).subscribe(response => {
 ...
})
0 голосов
/ 06 июня 2018

Я не знаю, подойдет ли вам мой ответ, но вы можете создать пустой объект массива в своем компоненте, и когда вы делаете вызов RESTAPI, вы просто делаете push для объекта.

Что-то вроде:

private arrayObject: any = [];

this.http.getbooks().subscribe(
    data=>{
    this.getbooksinfo=data;
    this.arrayObject.push(this.getbooksinfo);
    }
)
this.http.getauthors().subscribe(
    data=>{
    this.authors=data;
    this.arrayObject.push(this.authors);
    }

)

EDITED ---

После комментария, написанного пользователем, вы можете использовать forkJoin, но вам нужно немного изменить свой код.

import { forkJoin } from "rxjs/observable/forkJoin";
    let apibooks = this.httpClient.get('YOU_API_URL');
    let apiauthors = this.httpClient.get('YOU_API_URL');

    forkJoin([apibooks, apiauthors]).subscribe(results => { console.log(results); // will print array of results;
console.log(results[0]); // will print apibooks results;
console.log(results[1]); // will print apiauthors results;
});

Распечатайте в консоль журнал, чтобы вы могли понять, что происходит.

...