我正在尝试在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´
答案 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插件。