【问题标题】:How to change the value of an imported object in Typescript?如何在 Typescript 中更改导入对象的值?
【发布时间】:2018-11-12 06:00:19
【问题描述】:

我试图在 ionic 3 中使用 ngx-mqtt 插件包含一个 MQTT 代理配置。我正在使用一个变量进行代理配置。在我的app.module.ts 中是这样的。

MQTT_SERVICE_OPTIONS = {
  hostname: '172.30.66.232',
  port: 9001,
  path: '/ws'
};
export { MQTT_SERVICE_OPTIONS };

export function mqttServiceFactory() {
  return new MqttService(MQTT_SERVICE_OPTIONS);
} 

在我的home.ts 页面中,我正在从 MQTT 获取数据。

this._mqttService.observe('roomData').subscribe((message1: IMqttMessage) => {
    console.log(this.message1);  
});

一切正常。现在我需要通过动态绑定输入字段中的对象值来更改导出的变量MQTT_SERVICE_OPTIONS 的值。 所以我试图改变它在home.ts 中的值,如下所示:

import { MQTT_SERVICE_OPTIONS } from '../../app/app.module'
saveBroker() {
     console.log(MQTT_SERVICE_OPTIONS);
     export MQTT_SERVICE_OPTIONS = {
         hostname: this.hostname,
         port: this.port,
         path: this.protocol
     };
}

在这里我可以正确地控制对象。但无法更改其值并将其导出回来。这给我一个错误:ERROR ReferenceError: MQTT_SERVICE_OPTIONS is not defined

那么,请建议我如何更改对象的值?

【问题讨论】:

  • 嗨@darshan,我无法让 ngx-mqtt 插件在我的 ionic 3 应用程序中工作。您使用的 ngx-mqtt 版本是什么?提前致谢。
  • 嗨@EsthonWood,我在ngx-mqtt中使用了v5.4.0。使用此链接获取指导 - sclausen.github.io/ngx-mqtt

标签: angular typescript ionic3


【解决方案1】:

您不希望重新导出导入的对象。客户端和提供者已经共享一个公共 MQTT_SERVICE_OPTIONS 对象。您宁愿更改此共享对象的内容,例如:

saveBroker() {
     console.log(MQTT_SERVICE_OPTIONS);
     MQTT_SERVICE_OPTIONS.hostname = this.hostname;
     MQTT_SERVICE_OPTIONS.port = this.port;
     MQTT_SERVICE_OPTIONS.path = this.protocol;
}

我希望这对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-05
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多