Создана служба со следующим кодом. Я написал две функции для создания собственного хранилища с ip и портом, а следующий - для получения значений из собственного хранилища.Передача значения из службы на страницу в Ionic 2
DatabaseService
export class DatabaseService {
...
public ip: string;
public port: string;
...
public createConnectionInfo(ip: string, port: string) {
NativeStorage.setItem('connectionStorage', { ip: ip, port: port })
.then(
() => console.log('Stored Connection Information!'), //Working
error => console.error('Error storing connection information', error)
);
}
...
public getConnectionInfo() {
this.platform.ready().then(() => {
NativeStorage.getItem('connectionStorage').then(data => {
this.ip = data.ip; // I'm setting the ip in this public variable
this.port = data.port;
console.log(this.ip); //Works
}, error => {
this.navCtrl.push(SettingPage);
});
});
}
...
}
SettingPage
export class SettingPage {
connection: any;
service: DatabaseService;
ip: string;
port: string;
constructor(public navCtrl: NavController, platform: Platform, service: DatabaseService) {
this.service = service;
platform.ready().then(() => {
if(true){
console.log(this.service.ip+" IP FROM THE SERVICE"); \\I'm trying to get the ip from the service.
}
});
}
...
}
Я был в состоянии создать родное хранилище, а также извлекать значения из родного хранения, но я не мог пройти мимо, что от моего на странице настроек. Пожалуйста, порекомендуйте. Спасибо. Я все еще пытаюсь решить эту проблему. Пожалуйста помоги.
Мои Ионные Информация
Cordova CLI: 6.3.1
Gulp version: CLI version 3.9.1
Gulp local:
Ionic Framework Version: 2.0.0-rc.1
Ionic CLI Version: 2.1.0
Ionic App Lib Version: 2.1.0-beta.1
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Mac OS X El Capitan
Node Version: v6.7.0
Xcode version: Xcode 7.3.1 Build version 7D1014
Я предполагаю, что когда вы пытаетесь получить доступ к 'service.ip', это не определено, просто чтобы проверить, измените свой код SetupPage, оберните свой консольный журнал в таймаут, примерно так:' setTimeout (() = > {console.log (this.service.ip + «IP FROM SERVICE»);}, 100) 'И посмотрите, записывает ли он ваш IP-адрес –
Спасибо @FabioAntunes. Да, он работает, но я не хочу использовать функцию setTimeout(). Есть ли другой путь? –
, а также, это работает иногда только не всегда. –