Как получить доступ к переменной класса внутри функции Promise then()?

Я работаю на PHP-сайте Angular4 +, где я отправляю HTTP-запросы на сервер, используя Promise, так как я хочу, чтобы мое приложение выполняло маршрутизацию в соответствии с ответом сервера. Я хочу получить доступ к переменной класса внутри then(), но он бросает undefined() ошибка.

Вот мой код:

status = false;

checkUser(): Promise<any>{
// .....
    return this.http
        .get('http://localhost:8000/api/user', this.options)
        .toPromise()
        .then(this.extractData)
        .catch(this.handleError);
}

private extractData(res: any) {
    data = res.json();
    this.status = data.status; // here it throws error undefined 
    return this.status; 
}

Есть ли другой способ реализовать это?

1 ответ

Решение

Если вы передаете ссылку на функцию, this больше не будет указывать на локальный экземпляр класса.

Ты можешь использовать bind

.then(this.extractData.bind(this)

или функции стрелок

.then((res) => this.extractData(res))

чтобы получить желаемое поведение.

Другие вопросы по тегам