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

TypeScript Discussion :

Comment modifier un attribut ?


Sujet :

TypeScript

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut Comment modifier un attribut ?
    Bonjour j'ai un modèle comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    export class Sommaire{
     
        id:number;
        name:string;
     
        static matieres:Sommaire[] = [
            { id:1, name: 'Informatique' },
            { id:2, name: 'Electronique' },
            { id:3, name: 'Infographie' },  
            ];
    }

    j'ai un formulaire sous angular2, et je souhaite éditer un sommaire,

    voici la classe qui va modifier l'une des métières que j'aurais sélectionner:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    import {Component,Output,EventEmitter} from '@angular/core';
    import {Sommaire} from './sommaire-data';
    import {SommaireGestionService} from './sommaire-gestion';
     
    @Component({
        selector: 'edit-matiere',
        templateUrl: './app/sommaire/sommaire-edit.template.html',
    })
     
    export class EditMatiereComponent {
     
        public matiereAediter:Sommaire;//une seul matiere à editer ou afficher
     
        @Output() onEdit = new EventEmitter();
        @Output() onLst = new EventEmitter();
     
        constructor(private sommaireService:SommaireGestionService){
           this.matiereAediter = this.sommaireService.getMatierNow();
        }
     
        annuler(){
                this.onLst.emit(null);
        }
     
        modifierMatiere(matiere:string){ //après avoir modifier son nom
            console.log(matiere);
            console.log(this.matiereAediter.id);
            this.matiereAediter.name = matiere;
            console.log(this.matiereAediter+" =fin ");
            this.onEdit.emit(null);
        }
    }
    lorsque j'active un bouton qui appel la méthode modifierMatiere(matiere:string), j'ai cette chaine que je souhaite la modifier directement mon modèle "Sommaire".
    Mais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            console.log(this.matiereAediter+" =fin ");
    me donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Electronique88 sommaire-edit.component.js:24:9
    2 sommaire-edit.component.js:25:9
    [object Object] =fin
    ici matiereAediter est vide ? comment on précède pour réinjecter le nom modifier ?

    merci de vos réponse

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 957
    Points : 44 119
    Points
    44 119
    Par défaut
    Bonjour,
    pour voir ce que contient ton objet il ne te faut pas faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(this.matiereAediter+" =fin ");
    mais plutôt un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(this.matiereAediter, " =fin ");

  3. #3
    Membre éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    Par défaut
    Bonjour, une remarque concernant ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    export class Sommaire{
     
        id:number;
        name:string;
     
        static matieres:Sommaire[] = [
            { id:1, name: 'Informatique' },
            { id:2, name: 'Electronique' },
            { id:3, name: 'Infographie' },  
            ];
    }
    Il n'est pas correct, même s'il compile et fonctionne, car les items dans le tableau ne sont pas des instances de la classe "Sommaire".

    Il faudrait faire (avec une interface) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    export interface Matiere {
        id: number
        name: string
    }
     
    export let matieres: Matiere[] = [
        { id: 1, name: 'Informatique' },
        { id: 2, name: 'Electronique' },
        { id: 3, name: 'Infographie' }
    ];
    Ou bien avec une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    export class Sommaire {
        constructor(public id: number, public name: string) {
        } 
        static matieres = [
            new Sommaire(1, 'Informatique'),
            new Sommaire(2, 'Electronique'),
            new Sommaire(3, 'Infographie')
        ];
    }

  4. #4
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Perso, tout définir en Static n'est pas une bonne chose car ça reste en mémoire, à moins qu'il y ait un mécanisme de cache.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  5. #5
    Membre éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    Par défaut
    Dans tous les cas, ce qui est exporté reste en mémoire.

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    merci pour ces conseils

    j'ai prix exemple sur un tuto pour les attibuts statique.

    Je ne trouve pas et je n'arrive pas à faire la démonstration d'une hydratation de cette objet Sommaire (je suppose que c'est la méthode map() de rxjs)?

    peut t'on passer du format JSON en objet facilement?

    j'aimerais comprendre et savoir quel est la bonne facon d'hydrater un modèle d'objet depuis un json ?

    par exemple je reçois depuis un webservice du json,

    avant d'être exploiter on va récupérer les data et les hydrater soit les charger dans

    leur attribut de l'objet à hydrater.

    si vous avez des exmples de démonstration en Typescript?

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/08/2009, 08h50
  2. Comment modifier l'attribut onmouseover une fois la page chargée ?
    Par Kyn dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 12/01/2009, 16h55
  3. Réponses: 3
    Dernier message: 13/07/2008, 14h16
  4. Réponses: 6
    Dernier message: 30/10/2007, 15h04
  5. comment modifier les attributs d'un fichier?
    Par kamal101 dans le forum C++
    Réponses: 1
    Dernier message: 18/03/2005, 14h16

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