Access-Variablen haben eine Komponente von einer RxJS-Funktion subscribe () deklariert.

Ich kann @ verwendthis.variable, um auf Variablen in einem beliebigen Teil der Komponente zuzugreifen, außer in RxJS-Funktionen wiesubscribe() odercatch().

In dem folgenden Beispiel möchte ich eine Nachricht drucken, nachdem ein Prozess ausgeführt wurde:

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 rennedoSomething(), Ich bekommenicht definier. Dieses Szenario kann mit einer lokalen Variablen gelöst werden:

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, das hängt mit dem @ zusammthis aber warum kann ich nicht auf das @ zugreifthis.message innerhalb dessubscribe()?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage