я следующий класс обслуживания, его были установлены как синглтон в поставщиках и т.д.ionic2 rention данных службы
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import { Geolocation } from 'ionic-native';
import { Platform } from 'ionic-angular';
import 'rxjs/Rx';
@Injectable()
export class TestService {
private appData: any;
constructor(private http: Http) {
console.log("service constructor called");
this.loadAppData();
}
loadAppData() {
let url = `/api/b502daab-2c7b-4cea-a00e-dc5aa6b58196`;
this.http.get(url).map(res => res.json()).subscribe(data => {
this.appData = data;
console.log(this.appData);
});
console.log(this.appData);
}
getAppData()
{
return this.appData;
}
}
console.log (this.appData) внутри подписываются выходов объект, как он должен один после выходов undefined, не должен ли он быть установлен к тому времени? чтобы усугубить ситуацию.
Я звоню loadappdata на конструктор и в моих страницах я хочу, чтобы получить объект, вызвав
export class HomePage {
constructor(public navCtrl: NavController, public testService: TestService) {
console.log(testService.getAppData());
};
}
но getAppData всегда неопределенная,
Я пытаюсь получить услугу сохранить объект поэтому мои страницы могут получать данные из этого по мере необходимости. У меня сложилось впечатление, что это то, как следует использовать услугу для обмена данными по страницам
, но если я сделаю несколько вызовов для загрузкиAppData из нескольких страниц, которые будут вызывать URL-адрес несколько раз? Я пытаюсь вызвать loadAppData один раз и получить результат, который будет использоваться без необходимости повторного вызова службы – Zoinky
Я добавил код. Недостатком является то, что у вас нет контроля над повторной загрузкой данных. Вместо этого вы можете использовать ваш app.component, чтобы загрузить данные, как вы это делаете в HomePage моего первого примера, а в функции успеха подписки назначьте данные переменной-члену TestService, к которой вы обращаетесь на каждой странице, а затем назначьте rootPage. – LuJaks