Angular 7 - добавление данных в массив вместо его замены - PullRequest
0 голосов
/ 17 марта 2019

Я получаю данные из API WordPress после нажатия кнопки:

<a (click)="initGetComments()">Get comments</a>

это код:

export class AppComponent {

  commentsResults: CommentsItem[] = [];

  getComments(ID:string): Observable<CommentsItem[]> {
    console.log(ID);

    return this.http
      .get(`https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/${ID}/replies/?number=1`)
      .map(res =>
        res.comments.map(
          item =>
            new CommentsItem(
              item.post.ID,
              item.ID,
              item.author.name,
              item.author.avatar_URL,
              item.date,
              item.raw_content
            )
        )
      );
  }

  initGetComments(){
    var posts = document.getElementsByClassName('single-post');

    var i=0;
    for( i; i < posts.length; i++ ) {
      this.getComments(posts[i].id).subscribe(data => {
        this.commentsResults = data;
        console.warn("commentsResults =", this.commentsResults);
      })
    }

  }
}

export class CommentsItem {
  constructor(
    public post_ID: number,
    public ID: number,
    public author: string,
    public avatar: string,
    public date: string,
    public content: string
  ) {}
}

И результат:

enter image description here

Я бы хотел хранить все данные этих запросов в одном массиве, а не заменять их, и было бы здорово, если бы каждый запрос, вызванный циклом for, отправлялся по завершении предыдущего.

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Просто используйте this.commentsResults.push(data);

0 голосов
/ 17 марта 2019

Может быть, это вам поможет:

this.commentsResults.merge(data);.Вместо этого: this.commentsResults = data;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...