Я могу использовать this.variable
для доступа к переменным в любой части компонента, кроме как внутри функций RxJS, таких как subscribe()
или catch()
.
В приведенном ниже примере я хочу напечатать сообщение после запуска процесса:
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);
});
}
}
Когда я запускаю doSomething()
, я получаю неопределенное значение. Этот сценарий может быть решен с использованием локальной переменной:
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);
});
}
}
Я предполагаю, что это связано с this
, однако, почему я не могу получить доступ к this.message
внутри subscribe()
?