ionicframework导入模块,变量总是未定义

时间:2017-08-16 05:49:02

标签: node.js cordova ionic-framework ionic2

我正在尝试在ionicframework项目中导入新功能。我执行了以下命令行:

  

$ ionic cordova插件添加cordova-plugin-uniquedeviceid

     

$ npm install --save @ ionic-native / unique-device-id

在我的文件MyOwnService.ts中,我正在导入它:

import { UniqueDeviceID } from '@ionic-native/unique-device-id';

import { Http } from '@angular/http';

然后在我MyOwnService的构造函数中:

  constructor(http: Http, uniqueDeviceID: UniqueDeviceID) {
      console.log('Loading provider');
      uniqueDeviceID.get()
          .then((uuid: any) => console.log("UID : " + uuid))
          .catch((error: any) => console.log("UIDERR : " + error));
  }

uniqueDeviceID始终未定义。如果我在构造函数中添加一个额外的参数,http'也不再起作用了。

我错过了什么吗?我是否必须在app.module.ts

中添加内容

我在workspacedir/node_modules/@ionic-native/unique-device-id´

中验证了目录

1 个答案:

答案 0 :(得分:1)

  

必须UniqueDeviceID是提供者的提供者吗?

是。从Ionic-Native 3.x开始,所有离子本地服务都需要设置为提供者。检查here

@NgModule({
  ...

  providers: [
    ...
    UniqueDeviceID
    ...
  ]
  ...
})
export class AppModule { }

其次,访问插件时,您需要使用this.platform.ready(),如下所示:

 constructor(http: Http, uniqueDeviceID: UniqueDeviceID) {
      console.log('Loading provider');
      this.platform.ready().then(() => {
         uniqueDeviceID.get()
          .then((uuid: any) => console.log("UID : " + uuid))
          .catch((error: any) => console.log("UIDERR : " + error));
      });
  }

同时确保您在仿真器/设备中进行测试,因为使用ionic serve时未启用cordova插件。