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 :

[Angular 2] Utilisation de 'this' dans un 'this.http'


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut [Angular 2] Utilisation de 'this' dans un 'this.http'
    Bonjour, j'ai une petite question concernant les this, voici mon code

    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
     
     return this.http.get(URLData+''+sequence)
                .toPromise()
                .then(response => {
                    // Une fois que l'on a les informations, on créé un objet user de façon compléte
                    let doc = response.json().document ;
                    let status = doc.Statut;
                    let profil = doc.profil;
     
                    if (profil != undefined){
                        this.user = {
                     ...
                        }
                        statut = "OK";
                        return { user : this.user, exceptionError: exceptionError, idWidgetCallError : idWidgetCallError, messageError :  messageError, status : statut }
    Le probléme c'est qu'en dehors du this.http, ma variable this.user est bien reconnu mais une fois à l'intérieur de ce this.http, il n'est plus reconnu vu que le contexte du this à changé je pense.
    Comment je peux faire pour utiliser ma variable this.user dans le this.http ?

    Cdlt,

  2. #2
    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
    et user est déclaré ou ?

  3. #3
    Membre éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut
    Bonjour,

    voici le code complet :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    export class MainFrameService{
     
        constructor(public http: Http, public user : User, public myAppErrors : Errors) { }
     
        getInitDataAjax(){
          ...
     
            let sequence = SequenceData.initDisplay
                .replace('#LOGINDOM#', loginDOM )
                .replace('#MEMBERSHIPDOM#', memberShipDOM )
                .replace('#BRANDDOM#', brandDOM )
     
     
            return this.http.get(URLData+''+sequence)
                .toPromise()
                .then(response => {
                    // Une fois que l'on a les informations, on créé un objet user de façon compléte
                    let doc = response.json().document ;
                    let status = doc.Statut;
                    let profil = doc.profil;
     
                    if (profil != undefined){
                        this.user = {
                            login : profil.Login,
                            civilite : profil.Civilite,
                            nom : profil.Nom,
                            prenom : profil.Prenom,
                            mail : profil.Email,
                            type : profil.Type,
                            ctree : profil.CTREE,
                            rtree : profil.RTREE,
                            raisonsociale : $.trim(profil.RaisonSociale),
                            tdb : profil.DefaultDashboard,
                            isInSubstition : '',
                            substitedlogin : '' ,
                            substitednomPrenom :'',
                            substitedTDB : ""
                        }
                        statut = "OK";
                        return { user : this.user, exceptionError: exceptionError, idWidgetCallError : idWidgetCallError, messageError :  messageError, status : statut }

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Bonjour,
    as tu essayé d'utiliser une « variable de capture » du this ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    getInitDataAjax(){
        var me = this;
        // ...
        return me.http.get(URLData+''+sequence)
            // ...

  5. #5
    Membre éprouvé

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

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    qu'est ce que donnerais :
    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
     
        private user :User;
     
        constructor(public http: Http, User) {
          this.User = this.user;
          console.log(this.http);
          console.log(this.user);
     
        }
    getInitDataAjax(){
    ...
    .then(response => {
          console.log(this.http);
          console.log(this.user);
        }
    }
    a t'on les mêmes résultats (même si normalement c'est la même chose de passer directement dans le constructeur on ne sais jamais)? sinon arrêter le serveur le recompiler , ça donne la même chose pas d'erreur ?

  6. #6
    Membre éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut
    Bonjour,

    desolé pour mon absence,

    @NoSmoking : je vais essayer avec la capture du this.

    @keokaz : Que veux-tu dire par arrêtre le serveur, le recompiler ?

Discussions similaires

  1. utiliser this dans un callback
    Par pelloq1 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2012, 14h30
  2. Réponses: 3
    Dernier message: 23/09/2010, 16h52
  3. utiliser "this" dans une sous classe
    Par lucke_widness dans le forum Qt
    Réponses: 1
    Dernier message: 20/01/2010, 16h53
  4. Réponses: 5
    Dernier message: 12/03/2006, 14h38

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