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 :

initialisation d"un champ date via un patchValue compris dans objet complex


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut initialisation d"un champ date via un patchValue compris dans objet complex
    Bonjour

    Je recupere via un serviceREST un objet complex comprenant une date au format yyyy-MM-DD, mais lorsque je souhaite initialiser ma "form" avec un patchValue, ma date n'est pas reconnu et donc mon date-picker va me poser un soucis
    Une idee ?
    Je voudrais eviter de me convertir tous les champs un par un à cause d'un seul champ date !

    Merci


    1 json object from MyService
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
        "profilId": 50531,
        "surname": "3454",
        "name": "11",
        "date": "2027-12-30"
    	...
    	...
    	...
    	...
    	...
     
     
    }
    2 html
    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
     <kendo-datepicker id = "date" formControlName = "date" class = "pull-left" >  </kendo-datepicker>
     
        3 component
        export class DossiersDetailDossierTabsheetSommaireFormComponent implements OnInit {
        constructor(private formBuilder: FormBuilder,
            private activatedroute: ActivatedRoute,
            private router: Router,
            private dps: MyService ) {}
     
        ngOnInit() {
            this.registerForm = this.formBuilder.group({
                profilId: [''],
                surname: [''],
                name: [''],
    			date: ['']
            });
     
            this.dps.getData(this.id)
            .pipe(first())
            .subscribe(x => this.registerForm.patchValue(x)); //ERROR ON Date field
        }
    }

  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
    utilises les balises code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .subscribe((x: any) =>{
     console.log('x', x);    // ça donne quoi ?
     this.registerForm.patchValue(x.code)
     
    }
    ); //ERROR ON Date field

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Bonjour
    Sur un champ normal cela fonctionne mais j'ai 50 champs dans ma page
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
       this.dps.getService(this.id).subscribe((x: any) =>{
     
              console.log('x', x);    // ça donne quoi ? --> OK
              this.registerForm.patchValue(x.nom)
            console.log('apres NOM ok')
     
           this.registerForm.controls['dateDeNaissance'].patchValue(new Date(x.dateDeNaissance)); //ok
    //Mais j'ai 50 champs !!
     
            }

  4. #4
    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
    on peut setter un formulaire de façon globale :
    mais faut que le nommage des champs et du json correspondent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.registerForm.setValue(.......mon json.....);

    si il y a des différences comme tu l'a indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.registerForm.setValue(x);         // peut être une erreur va etre lancé, je ne sais pas
    this.registerForm.controls['dateDeNaissance'].setValue(new Date(x.dateDeNaissance));
    il y a une erreur ? si oui, j'ai une autre solution

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    J'ai effectivement une erreur "Error: The 'value' should be a valid JavaScript Date instance"
    Ma form possède 52 champs en tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          this.dps.getService(this.id).subscribe((x: any) =>{
          this.registerForm.setValue(x);         // peut être une erreur va etre lancé, je ne sais pas
          this.registerForm.controls['dateDeNaissance'].setValue(new Date(x.dateDeNaissance));
              this.registerForm.controls['expirationRamq'].setValue(new Date(x.expirationRamq));
              this.registerForm.controls['dateEvenementCsst'].setValue(new Date(x.dateEvenementCsst));
              this.registerForm.controls['dateExpirationCarteFadoq'].setValue(new Date(x.dateExpirationCarteFadoq));
            }
          );

  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
    on ne peut pas mettre un new date dans un champ
    en html, tous les champs input sont des chaines de caractères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          this.dps.getService(this.id).subscribe((x: any) =>{
          this.registerForm.setValue(x);         // peut être une erreur va etre lancé, je ne sais pas
          this.registerForm.controls['dateDeNaissance'].setValue(x.dateDeNaissance);
              this.registerForm.controls['expirationRamq'].setValue(x.expirationRamq);
              this.registerForm.controls['dateEvenementCsst'].setValue(x.dateEvenementCsst);
              this.registerForm.controls['dateExpirationCarteFadoq'].setValue(x.dateExpirationCarteFadoq);
            }
          );

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

Discussions similaires

  1. [MySQL] le champ date ne se remplie pas dans ma base de donné
    Par jadow1312 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/09/2020, 14h21
  2. [SQL] Upload Champ Date via ODBC (Oracle)
    Par benjisan dans le forum SAS Base
    Réponses: 2
    Dernier message: 28/06/2013, 15h37
  3. Réponses: 1
    Dernier message: 17/05/2011, 10h29
  4. renseigner un champ de type date via un formulaire
    Par manguigs dans le forum Langage
    Réponses: 9
    Dernier message: 17/05/2010, 01h00
  5. [AC-2007] Tri multicritère via champ date
    Par meehan dans le forum IHM
    Réponses: 21
    Dernier message: 03/08/2009, 19h01

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