javascript - Angular 2 与 TypeScript : View not updating after setting variable in response handler

标签 javascript html angular typescript

我在使用 TypeScript 时遇到了 Angular 2 的问题,我需要额外的关注。我正在从一个效果很好的 API 请求一个 token 。在我的响应处理程序中,我检查基本错误并将其显示给最终用户。如果我从控制台注销错误和消息,它会正确显示,但 View /模板不会更新。

在我的类里面,我有以下内容:

public message: string;

在我的构造函数中,我有:

constructor() {
    this.message = 'Message to enduser';
}

我的两种方法如下:

myRequest() {
    (<any>window).privateAPI.getToken({
        token: this.tmpData.token
    }, this.responseHandler);
    return false;
}

responseHandler(response: any) {
    setTimeout(function() {
        if (response.error) {
            // this.message update is not updating in the template
            this.message = response.error.message;
            console.log('error: ', this.message);
        } else {
            // success
        }
    }, 100);
}

任何帮助将不胜感激。

最佳答案

我能够通过使用 ngZone 解决这个问题。以下解决了我的组件未更新 API 响应中的模板的问题。

// import NgZone
import {Component, NgZone} from '@angular/core';

// pass NgZone to constructor
constructor(private _zone: NgZone) {
    this.message = 'Message to enduser';
}


requestToken() {
    (<any>window).privateAPI.getToken({
    token: this.tmpData.token
    }, (status: number, response: any) => {
        this._zone.run(() => {
            if (response.error) {
                this.message = response.error.message;
            } else {
              // good to go
            }
        });
    });
}

关于javascript - Angular 2 与 TypeScript : View not updating after setting variable in response handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39186328/

相关文章:

javascript - 无法读取未定义的属性 'setState' - 进度条

javascript - 在 AngularJS 和 ui-router 中遇到嵌套状态的问题

html - 是否可以在忽略不透明层的同时使用 mix-blend-mode 模糊背景?

javascript - 如何构建/部署 Angular 2 项目到生产环境?

javascript - 在纯 JavaScript 中将 RGBA 渲染为 PNG?

javascript - 垂直滚动时如何防止未定义的 scrollLeft?

javascript - 如何在数组数组中查找和提取所有重复的子集?

php - 使用 javascript 和 mysql 查询自动填充字段以进行下拉

angular - 无法在 ionic 功能之外获得 promise 值

javascript - Angular 2 和 FireBase 消息传递 - 无法注册