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()
?