Как перебрать ответ бэкэнд-карты API в angular или машинописный текст - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть API, который будет возвращать ответ карты, как.

{thomas: 3, test70: 2, tim: 2, elin: 2, sumeet12: 1}

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

Ошибка Got ::

Это выражение не вызывается , Тип 'Number' не имеет вызова signatures.ts (2349)

  this.testObject.forEach((value: number, key: string) => {
    console.log(key, value);
});

Итерации по карте машинописи

Но я могу выполнить итерацию в html используя приведенный ниже код ..

In html

  <div *ngFor="let item of testObject | keyvalue: originalOrder; let i=index">
    <span *ngIf="i<3">
      Key: <b>{{item.key}}</b> and Value: <b>{{item.value}}</b>

    </span>   
  </div>

In .ts file

testObject: { [key: string]: number };
showresult: any;

  getQuizResult(id){
    this.service.getResult(id).subscribe((stndrdResp: Response) => {
      this.showresult = stndrdResp.obj; // this will return a object
      this.testObject = this.showresult; // assigning the key value response to testObject
      });
  }

В основном я хочу повторить ответ API бэкэнда внутри getQuizResult, чтобы я мог выполнить какое-то действие. Ценю ваше ценное предложение.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Поскольку testObject является простым объектом, а не Map экземпляром. Вам необходимо создать объект карты или массив.

const res = {thomas: 3, test70: 2, tim: 2, elin: 2, sumeet12: 1};
var arr = Object.entries(res);//[[ "thomas", 3 ]...]
var map = new Map(arr);//use arr or create a map
0 голосов
/ 10 апреля 2020

Я думаю, это то, что вы ищете: { ссылка }

Комментарий; в одном из приведенных выше кодов у вас есть key: string во втором параметре, но в обратном вызове forEach вторым является index, который всегда является числом. Итак, это должно выглядеть так:

this.testObject.forEach((value: number, index: number) => {
    console.log(index, value);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...