2017-08-16 57 views
1

我試圖在離子框架項目中導入新功能。我執行以下命令行:離子框架導入模塊,變量始終未定義

$離子科爾多瓦插件添加科爾多瓦 - 插件 - uniquedeviceid

$ NPM在安裝--save @離子本地/獨特,設備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

你是否將UniqueDeviceId設置爲提供者? –

+0

不,MyOwnService是一個提供者。必須UniqueDeviceID是提供者的提供者嗎? 我試圖將它註冊爲app.module.ts中的提供程序,但它沒有幫助 – user2447161

回答

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時科爾多瓦插件未啓用。

+0

感謝您的回覆。我仍然得到一個「不能讀取屬性」得到「未定義」,但我確實使用離子服務... 我會嘗試使用一個模擬器,但由於我正在密切與'離子發球'對於我的測試,有沒有辦法處理它? – user2447161

+0

你應該在設備上測試。 –