Zugriff auf Variablen, die eine Komponente aus einem RxJS subscribe () - Funktion

Ich bin in der Lage zu verwenden this.variable um auf Variablen zuzugreifen, die in jedem Teil der Komponente, außer in den RxJS Funktionen wie subscribe() oder catch().

Im Beispiel unten, ich will so drucken Sie eine Nachricht nach dem ausführen eines Prozesses:

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);
        });
    }
}

Wenn ich doSomething() bekomme ich undefined. Dieses Szenario kann gelöst werden, verwenden Sie eine lokale variable:

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);
        });
    }
}

Ich nehme an, dies ist im Zusammenhang mit der this jedoch, warum kann ich nicht auf die this.message innerhalb der subscribe()?

InformationsquelleAutor Haoliang Yu | 2016-01-07
Schreibe einen Kommentar