L'accès à des variables déclarées d'un composant à partir d'un RxJS subscribe() la fonction

Je suis en mesure d'utiliser this.variable pour accéder à des variables dans une partie de la composante, sauf à l'intérieur de RxJS fonctions comme subscribe() ou catch().

Dans l'exemple ci-dessous, je veux imprimer un message après l'exécution d'un processus:

import {Component, View} from 'angular2/core';

@Component({
    selector: 'navigator'
})
@View({
    template: './app.component.html',
    styles: ['./app.component.css']
})
export class AppComponent {
    message: string;

    constructor() {
        this.message = 'success';
    }

    doSomething() {
        runTheProcess()
        .subscribe(function(location) {
            console.log(this.message);
        });
    }
}

Quand je lance doSomething(), je reçois undefined. Ce scénario peut être résolu en utilisant une variable locale:

import {Component, View} from 'angular2/core';

@Component({
    selector: 'navigator'
})
@View({
    template: './app.component.html',
    styles: ['./app.component.css']
})
export class AppComponent {
    message: string;

    constructor() {
        this.message = 'success';
    }

    doSomething() {

        //assign it to a local variable
        let message = this.message;

        runTheProcess()
        .subscribe(function(location) {
            console.log(message);
        });
    }
}

Je suppose que cela est lié à la this, cependant, pourquoi je ne peux pas accéder à la this.message à l'intérieur de la subscribe()?

OriginalL'auteur Haoliang Yu | 2016-01-07