Dies kann eine allgemeinere Frage über den Umfang und die variable Erreichbarkeit von Typoskript sein.nicht in der Lage, Komponentenvariablen innerhalb einer RxJS subscribe() Funktion zu erhalten
Ich kann this.variable
verwenden, um Variablen in jedem Teil der Komponente zu erhalten, außer RxJS-Funktionen wie subscribe()
oder catch()
. Zum Beispiel möchte ich nach dem Ausführen eines Prozesses eine Nachricht drucken:
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);
});
}
}
Als ich doSomething()
laufen, werde ich eine undefined bekommen. Dies kann durch eine lokale Variable festgelegt 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, dies zu this
zusammenhängt. Aber warum kann ich eine Nachricht von this.message
in doSomething()
, nicht subscribe()
bekommen?
Pfeilfunktionen https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html – basarat