Я пытаюсь найти значение индекса с присоединенным к нему элементом `item-0, item-1, item-2, item-3`

#angular #indexing #repeater

Вопрос:

Я пытаюсь найти значение индекса с помощью item- attached внутри item-0, item-1, item-2, item-3 , если кто-нибудь может помочь с решением для этого.

json:

 "ingredients": {
      "item-0": {
        "amount": "30",
        "measurement": "g",
        "item": "455"
      },
      "item-1": {
        "amount": "10",
        "measurement": "oz",
        "item": "455"
      }
      "item-2": {
        "amount": "1",
        "measurement": "lb",
        "item": "455"
      }
      "item-3": {
        "amount": "3",
        "measurement": "tsp",
        "item": "455"
      }
    },'
 

angular:

 <ul *ngFor="let item of recipe.ingredients; let i = index;">
    <li>{{recipe[i].amount}}</li>
    <li>{{recipe[i].measurement}}</li>
    <li>{{recipe[i].item}}</li>
</ul>
 

Я могу вернуть значение индекса только в виде числа, но мне нужно будет вернуть его как item-[i] .

Ответ №1:

 const keys = Object.keys(ingredients);
console.log(keys); // [ 'item-1', 'item-2', 'item-3'] 

// Getting the numbers from each key
const numbers = keys.map((key) => key.split('-')[1]);
console.log(numbers); // ['1', '2', '3'];
 

Ответ №2:

Вы можете использовать встроенное значение ключа канала для итерации по объекту: https://angular.io/api/common/KeyValuePipe .

Затем вы можете использовать item.key (чтобы получить ‘item-1’, ‘item-2’, ‘item-3’) и item.value получить доступ к данным:

 <ul *ngFor="let item of recipe.ingredients | keyvalue">
  <li>{{item.key}}</li>
  <li>{{item.value.amount}}</li>
  <li>{{item.value.measurement}}</li>
  <li>{{item.value.item}}</li>
</ul>
 

Вот рабочий пример: https://stackblitz.com/edit/angular-ivy-uavxyr?file=src/app/app.component.html