IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Error: NG0900: Error trying to diff '[object Object]'. Only arrays and iterables are allowed


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Par défaut Error: NG0900: Error trying to diff '[object Object]'. Only arrays and iterables are allowed
    Bonjour,
    Je débute avec Angular et j'essaie de créer un frontend pour une ancienne application en Django.
    Le serveur API est un Django Rest Framewrok.
    Je tente de récupérer les données en ayant mis en place la pagination.
    Les données retournées sont de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Object { 
    ​count: 2530
    ​next: "http://localhost:8000/archives/api/archive/?page=2"
    ​previous: null
    ​results: Array(50) [ 0: Object { id: 2727, service_id: 1, nomService: "Service ...",}]
    }


    Par conséquent, j'en ai déduis ce modèle là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    export class Donnees {
      constructor (
        public count: number,
        public next: any,
        public previous: any,
        public results: Archive[]
      ) { }
    }
    ​​
    j'ai créé le service suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        getDonnees(APIUrl: string): Observable<Donnees> {
          return this.http.get<Donnees>(APIUrl)
        }
    Dans le composant.ts, j'utilise la fonction ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
      getDonnees(url: string) {
        this.archivesService.getDonnees(url)
          .subscribe(response => {
            this.archives = response.results;
     
            if (response.next) {
              this.next = response.next;
            }
     
            if (response.previous) {
              this.previous = response.previous;
            }
        });
      }
    Enfin, dans le componant.html, j'affiche les données avec :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                <tbody>
                  <tr *ngFor="let archive of archives">

    ça fonctionne. Les données s'affichent correctement mais j'obtiens le message suivant :
    "Error: NG0900: Error trying to diff '[object Object]'. Only arrays and iterables are allowed"
    Mes recherches sur Internet ne m'ont pas permis de trouver la solution.
    Il semblerait qu'il faille utiliser "map".
    Pouvez-vous m'aider ? Merci.

    Patrice

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Par défaut
    peut tu mettre le resultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{archives | json }}


    à savoir que le back ne doit retourner que du json (objet convertie en json)

    par exemple, du json est sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {
       results: [ 
           {name: 'toto'},
           {name: 'tutu'},
       ],
       date: '2022-04-12'
    }

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Par défaut Resultat {{ archives | json }}
    Le résultat de {{ archives | json }} est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [ 
    	{ "id": 2727, "service_id": 1, "nomService": "Services Techniques", "abbService": "ST", "reference_id": 10}, 
    	{ "id": 2726, "service_id": 2, "nomService": "Ressources Humaines", "abbService": "RH", "reference_id": 99, "nomReference": "----------", …. },
    	{ "id": 2725, "service_id": 2, "nomService": "Ressources Humaines", "abbService": "RH", "reference_id": 99, "nomReference": "----------", …. },
    ….
    ]

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Par défaut
    ajoute : --> (response: any)
    comme ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      getDonnees(url: string) {
        this.archivesService.getDonnees(url)
          .subscribe((response: any) => {
            this.archives = response.

  5. #5
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mai 2022
    Messages : 7
    Par défaut
    J'ai solutionné le problème.
    Mon code est juste.
    J'ai mal lu le message d'erreur qui faisait référence à une ancienne fonction.
    Un oubli de suppression.
    Une erreur bête qui m'a fait perdre beaucoup de temps !
    Désolé, merci d'avoir pris le temps de lire mon post.
    Bonne journée.

  6. #6
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    ok no pb.
    ça m'est arrivé plusieurs fois aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/11/2017, 08h42
  2. Réponses: 2
    Dernier message: 29/01/2012, 11h51
  3. Run time error 91 in vb:object variable or with block variable not set
    Par azzouz90 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/09/2011, 01h40
  4. Réponses: 0
    Dernier message: 21/05/2009, 12h20
  5. [RCP] [OSGi] error trying to scan <jar-file>: bundleresource://57/
    Par willoi dans le forum Spring
    Réponses: 4
    Dernier message: 18/06/2008, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo