javascript - 'this' 在 Angular、XML2JS 中未定义

标签 javascript angular angular5 xml2js

export class ServerComponent {
servers:string[];
getString:any;

serversJSON:any;
    constructor() {
      }
    ngOnInit() {
        console.log("ngOnInit");   
         this.getXmlService.getData().subscribe((getString) => 
        {
          xml2js.parseString(getString, function (err, result) {
            this.serverJSON = result; // This doesn't work
            console.log(result);      // This works
            });
        });
      }
}

在此代码中,指示的行似乎无法访问this。控制台日志记录显示未定义result 为我提供了正确且格式化的 JSON,但是当我尝试获取 result 变量并将其设置在 this.serverJSON 中时,它会抛出异常错误无法设置未定义的属性“serversJSON”。 我想获取结果中保存的值并将其放入 serversJSON 中。 如何实现这一点?为什么 this 不可用?

最佳答案

您正在丢失回调函数中 this 的上下文。

使用粗箭头函数(保留 this)。

xml2js.parseString(getString, (err, result) => {
  this.serverJSON = result;
});

关于javascript - 'this' 在 Angular、XML2JS 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703771/

相关文章:

javascript - 比较两个数组中的对象并根据 JavaScript 中的匹配返回

javascript - 用于累积奖金 "spinner"图像交换的 jQuery 延迟与 setTimeout

javascript - 将数据传递给动态创建的 Angular 模块和组件

node.js - 无需 npm 手动安装 Angular 5 模块

javascript - 如何使用 Apollo 在 Nuxt 生成的动态页面中正确填充页面标题?

javascript - JQuery 有办法在随机 HTML 字符串中解除事件绑定(bind)吗?

javascript - Angular/Ionic - 代码暴露会导致什么问题?

unit-testing - 当组件调用的服务抛出 Angular 2 异常时,测试组件是否正常运行

angular - typescript : Can't set default parameter value as false

javascript - 在 Angular 模板的样式标签中使用变量?