如何在Typescript中更改导入对象的值?

时间:2018-06-02 07:21:07

标签: angular typescript ionic3

我试图在离子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

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

1 个答案:

答案 0 :(得分:0)

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

$array1 = [2, 3, 4, 6];
$array2 = [
    ["id_sabor" => 1, "chocolate" => "N"],
    ["id_sabor" => 2, "chocolate" => "N"],
    ["id_sabor" => 3, "chocolate" => "S"],
    ["id_sabor" => 4, "chocolate" => "N"],
    ["id_sabor" => 5, "chocolate" => "S"],
    ["id_sabor" => 6, "chocolate" => "N"]
];

$array2 = array_reduce($array2, function($carry, $item) use ($array1){
    if (in_array($item["id_sabor"], $array1)) {
        if ($item["chocolate"] === "S") {
            $item["costo_extra"] = 25;
        }
        $carry[] = $item;
    }
    return $carry;
});

我希望这对你有帮助。