2017-07-25 2 views
0

J'ai private variables dans constructor et public variables dans le class.Comment accéder à cette variable à l'intérieur de cette fonction

Je me réfère à ces variables et fonctions en utilisant this mot-clé.

Je reçois undefined si j'essaie d'accéder à ces variables à l'intérieur de cette fonction.

Je suis nouveau à typescript, comment puis-je accéder à cette variable dans cette fonction?

Technologie: Tapuscrit, angulaire 2, angulaire 1.6.5, JavaScript

admin-entreprise-settings.ts

import { Component } from '../../../../common/extentions/to-angular2'; 
import { Http } from '@angular/http'; 

export class AdminCompanySettings { 
    public company: any; 
    constructor(private $http: ng.IHttpService) { 
     // 
    } 

    this.company = "New company"; 
    console.log("Prints all public variables", this); //prints all variables 

    var data = { url: www.google.com, data: { user: value } } 

    this.$http(data).then(function (response) { 

     console.log(response); 
     console.log(this.company); // undefined cannot access company 
     console.log("Prints window object", this); //this will print window 
                //and not company var or 
                //other scope vars 
    }).catch(function (error) { 

     console.log(error); 

    }); 
} 

Je me doutais bien qu'il peut être utilisé par .bind(this) mais Je ne suis pas familier avec où ajouter .bind();

https://angular.io/guide/http pour la réf.

+0

vous pouvez utiliser l'expression de la fonction de flèche, qui préserve la valeur de ce. utilise la fonction '() => {}' au lieu de la fonction. –

+0

Est-il normal que votre code soit en dehors de toute méthode et que votre classe ne soit pas fermée correctement? –

+3

Copie possible de [Comment accéder au bon \ 'this \' dans un rappel?] (Https://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback) – Alex

Répondre

6

Faire usage de la fonction flèche qui préserve la valeur de this

this.$http(data).then((response) => { 
     console.log(response); 
     console.log(this.company); 
     console.log("Prints window object", this); 
    }).catch(function (error) { 
     console.log(error); 
    });