0
votes

Propriété 'Nom' n'existe pas sur le type '[]'

IM Déclarant la matrice Iproducts dans les produits immobiliers tels que celui indiqué ci-dessous .. Mais qu'est-ce qui m'énerve qu'ils ne recongénentent pas que le nom de produit est déclaré ..Veuillez j'ai besoin d'une aide

produit-list.component .TS EM> P>

filteredProducts: IProduct[];
products : IProduct[] = [{
        "productId": 2 ,
        "productName": "Garden Cart" ,
        "productCode": "GDN-0023" ,
        "releaseDate": "March 18,2018",
        "description":  " 15 gallon capacity rolling",
        "price" :   32.99,
        "starRating": 4.2,
        "imageUrl" : "http://openclipart.org/image/300px/sgv_to_png/58471/garden_cart.png",

    },
    {

        "productId": 5 ,
        "productName": "Hammer" ,
        "productCode": "TBX-0048" ,
        "releaseDate": "May 21,2016",
        "description":  " Curved claw steel Hammer",
        "price" :   8.9,
        "starRating": 4.8,
        "imageUrl" : "http://openclipart.org/image",


    }
] ;

constructor() {

  this.filteredProducts = this.products;
  this.listFilter = 'cart';
}

performFilter(filterBy: string): IProduct[]{
    filterBy =filterBy.toLocaleLowerCase();
    return this.products.filter((product: IProduct) =>
        this.products.productName.toLocaleLowerCase().indexOf(filterBy) !== -1);
}


1 commentaires

A l'air, je suppose que votre tableau n'a pas de propriété appelé produitName mais votre seul produit à l'intérieur de la matrice a probablement;)


3 Réponses :


2
votes

Je vais aller sur un membre de ce que vous affichez et dis que this.products est une matrice de iProduct .

Vous essayez d'accéder à la propriété produitName d'un tableau, vous devez spécifier quel élément de la matrice que vous souhaitez accéder. Heureusement, vous avez déjà accès à un élément de votre fonction de filtrage, vous pouvez donc faire xxx


0 commentaires

1
votes

Vous avez des problèmes dans votre syntaxe Voici comment résoudre ce problème:

performFilter(filterBy: string): IProduct[]{
        filterBy =filterBy.toLocaleLowerCase();
        return this.products.filter((product: IProduct) =>
            product.productName.toLocaleLowerCase().indexOf(filterBy) !== -1
    )}


0 commentaires

0
votes

iproduct doit être un nom de produit modal et doit être une propriété dedans.

ou simplement utiliser Produits: tout au lieu de Produits: iProduct []


0 commentaires