Получить данные из файла JSON по идентификатору в Angular. Ошибка типа: items.find не является функцией - PullRequest
1 голос
/ 12 марта 2020

Пытается получить данные по id из файла JSON, но выдает ошибку в консоли

 TypeError: items.find is not a function

{
"product" :{
       "data" : [
           { "itemID" : "1" , "name" : "pen" , "qty" : "8" }`,
           { "itemID" : "2" , "name" : "notepad" , "qty" : "5" } 
  ]

} }

Функция, которую я использую, когда TypeError: items.find не является функцией в консоли

       getitems(itemID: string) {
           return this.http.get<Array<Fruits>>('assets/localjson.json')
           .pipe(
           map((items: Array<any>) => {
            return items.find((item: Fruits) => {
             return item.itemID=== itemID;

         });
         })
          );
         }
          office.ts
            export class officeitems {
               itemID: string;
               name: string;
               qty: string;

            }

1 Ответ

0 голосов
/ 12 марта 2020

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

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

Вам нужно изменить свои getItems метод и исправить определенный интерфейс.

   map((product: any) => { // <- you need to use your interface Product { } instead of any 
    return product.data.find((item: Fruits) => {
      return item.itemID=== itemID;
    });

{
  "product" :{
       "data" : [
           { "itemID" : "1" , "name" : "pen" , "qty" : "8" }`,
           { "itemID" : "2" , "name" : "notepad" , "qty" : "5" } 
    ]
  }
}

...