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 :

Passer un objet dans un material data table


Sujet :

Angular

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut Passer un objet dans un material data table
    Hello,
    Me revoilà

    Je cherche à passer un simple objet dans un datasource d'une table material comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {
          "codeModele": "3223er",
          "codeLibelle": "opl84",
          "stock": 12,
          "prixTTC": 29,
        }
    J'ai l'impression que le datasource n'accepte que des tableaux d'objets dans la doc (mais je lis mal la doc des fois...)

    J'aimerais pouvoir avec un ngFor "eplucher" les membres de l'objet dans 2 colonnes l'une pour les propriétés et une pour les valeurs
    Merci à toi

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 1 030
    Points
    1 030

  3. #3
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    En fait, cet exemple montre le système avec un tableau d'objet et ça j'arrive à le manipuler en attribuant une colonne pour chaque propriété. Dans mon cas, je n'ai qu'un objet avec plusieurs paires propriété: valeur et je voudrais une colonne
    qui affiche les propriétés et une autre les valeurs un peu comme un for...in dans la doc MDN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    const object = { a: 1, b: 2, c: 3 };
     
    for (const property in object) {
      console.log(`${property}: ${object[property]}`);
    }
     
    // expected output:
    // "a: 1"
    // "b: 2"
    // "c: 3"
    Sauf qu'il faudrait que j'arrive à faire ça dans mon template en fait..

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 1 030
    Points
    1 030
    Par défaut
    donc il faut convertir tes données de départ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const object = { a: 1, b: 2, c: 3 };
    en un tableau d'objet comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [
      {key: a, value: 1},
      {key: b, value: 2},
      {key: c, value: 3},
    ]

    ainsi tu pourras le transmettre au data table sous cette forme !

    je te laisse essayer de faire ça, si tu n'arrive pas je peux t'aider

  5. #5
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    yep, effectivement, je me demandais si il falait que j'en passe par là, je pense que j'ai réglé le problème grace à un ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.productSelected = Object.entries(value).map((e) => ( { [e[0]]: e[1] } ));
    Mais le mal est plus profond : je galère sur un autre point j'ai une erreur 404 lorsque je veux récupérer un objet ça doit l'observable qui n'est pas bonne
    Dans mon appli je souhaite en fait afficher un objet "product" dans un composant nommé "product" par une propriété codemodele qui fait office d'id, jusque là rien de fou.
    Pour cela je dois rentrer mon fameux code modele (un code à 3 chiffres) dans un input, et à la vaildation je devrais aficher le produit dans le data table. mais rien ne se passe...

    Côté back-end j'ai un fake en json-server

    service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    baseURL: string = "http://localhost:3000/";
    ..................................
    getProductByCodeModel(codeModele: number): Observable<Product> {
        return this.http.get<Product>(`${this.baseURL}zone/${codeModele}`);
      }
    ts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      onCheckRef() {
        let codemodele = this.refFormGroup.get('reference').value; // référence code modele d'un article
        this.sub = this.rayonService.getProductByCodeModel(codemodele).subscribe(value => {
          console.log(value);
    this.router.navigate([`/zone/${codemodele}`]);
        });
      }
    le html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <button (click)="onCheckRef()" matStepperNext>
          <mat-icon>done</mat-icon>
    </button>
    le backend :
    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
    16
    17
    18
    19
    20
    21
    22
    23
     
    {
      "product": [
        {
          "codeModele": 111,
          "codeLibelle": "879rty",
          "stock": 77,
          "prixTTC": 85,
          "couleur": "bleu",
          "matiere": "laine",
          "zone": "f15"
        },
        {
          "codeModele": 222,
          "codeLibelle": "opl84",
          "stock": 12,
          "prixTTC": 29,
          "couleur": "rouge",
          "matiere": "coton",
          "zone": "k14"
        }
      ]
    }
    le model
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    export class Product {
        codeModele: number;
        codeLibelle: string;
        stock: number;
        prixTTC : number;
        couleuyr: string;
        matiere: string;
        zone: string;
    }
    le routing
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      { path: 'zone/:id', component: ProductComponent },
    mon erreur
    Nom : Capture d’écran 2021-06-27 181826.png
Affichages : 77
Taille : 11,9 Ko
    Jene comprends pas pourquoi j'ai un localhost 3000 et non 4200 d'ailleurs (c'est ce qui provoque l'erreur peut-être)

    vloia...merci si tu vois l'erreur...

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 1 030
    Points
    1 030
    Par défaut
    teste l'url avec postman

  7. #7
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Affaire à suivre...

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 1 030
    Points
    1 030
    Par défaut
    erreur 404 arrive souvent quand une erreur coté serveur est généré !

  9. #9
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Suite et fin...
    Postman me renvoyait un 404

    Après 3 jours de souffrances, j'ai créé un server node.js à la place du json-server, et là ça fonctionne. C'est un peu long à expliquer ici
    mais sinon mon exemple est par là dans le compo zone utility
    https://github.com/olivier252/oliv-release

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 1 030
    Points
    1 030
    Par défaut
    en effet, jsonserver est très pointilleux sur le json
    le moindre petite incartade et tout l'ensemble s'écroule.

    je ne sais pas quel back tu comptes utiliser en prod
    mais si c'est un système de node.js
    je te conseil le framework: NestJS (qui est très simple à utiliser)

  11. #11
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Les gars vont me donner une librairie d'API avec openApi (swagger) sur laquelle il faudra me brancher. Je peux pas t'en dire plus, à l'heure où j'écris ces lignes, j'ycomprends que dalle..
    merci pr l'info sinon !

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 1 030
    Points
    1 030
    Par défaut
    fastoche !

    quand tu aura accès à swagger
    tu verras une liste genre

    POST /url/bidule
    GET /url/bidule
    ...

    tu t'en fout comment ça fonctionne, tu utilises ces urls et méthodes(POST, PUT...) dans ton projet angular pour envoyer, recuperer...
    tu auras le rôle de consommateur api

    pas plus compliqué que ça

  13. #13
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    C'est qd le lead dev m'a montré l'environnment en 42 sec j'ai un peu flippé...la spécification openApi, le back en C#, l'editeur swagger et tout et tout. bon enfin apparement il m'a dit exactement la même chose que toi lol...

  14. #14
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 1 030
    Points
    1 030
    Par défaut
    et oui
    le back tu t'en fou. tu n'y toucheras pas (qu'il soit fait en php, en ruby, en c#, en assembleur...), c'est aux dev. backend de travailler dessus.
    tu es un simple utilisateur

    bon courage !

    sache que parfois, il se peut qu'il y a une erreur sur le back. (sont humain comme nous)
    t'essais d'envoyer une requete post avec le bon format des données et tu as un retour négatif de ta requête (surtout 404)
    donc si tu es sur de ton coup tu peux le signaler aux backs !

    pour vérifier, tu peux aussi faire une teste avec postman

  15. #15
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    je vais bien me relire..

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

Discussions similaires

  1. passer plusieurs objets dans une session
    Par Hind4Dev dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/03/2016, 13h14
  2. [2.x] Passer un objet dans un formType
    Par jejeman dans le forum Symfony
    Réponses: 4
    Dernier message: 17/03/2014, 10h01
  3. passer un paramètre dans un nom de table
    Par AlexFred dans le forum VBA Access
    Réponses: 4
    Dernier message: 16/11/2011, 12h26
  4. [1.x] Passer un objet dans un link_to
    Par nims dans le forum Symfony
    Réponses: 3
    Dernier message: 17/07/2009, 13h08
  5. Table Parents-enfants -> conception des objets dans BO 6.1.3
    Par webvince18 dans le forum Designer
    Réponses: 4
    Dernier message: 04/10/2006, 17h27

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