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

Vue hybride

olivier252 Passer un objet dans un... 26/06/2021, 17h22
krakatoa tu as bien suivis cet exemple... 26/06/2021, 18h38
olivier252 En fait, cet exemple montre... 26/06/2021, 19h08
krakatoa donc il faut convertir tes... 26/06/2021, 20h10
olivier252 yep, effectivement, je me... 27/06/2021, 18h16
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    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 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

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

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    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 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
    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 éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    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 : 117
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 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
    teste l'url avec postman

+ 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