私はAngular2、Ionic2に慣れ親しんでおり、何かを誤解しているかもしれませんが、支援を望んでいました。
LocalStorageデータの保存と取得を目的とした「CurrentUser」というプロバイダーがあります。
_ getProfile(): any {
this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
}
_
この関数getProfile()
はpromiseを返します
このプロバイダーをコンポーネントに注入した場合。コンポーネントからこの関数を呼び出すときに、データを割り当てる前に解決するという約束をどのように待ちますか?.
_@Component({
templateUrl: 'build/pages/book_meeting/book_meeting.html'
})
export class BookMeetingPage implements OnInit {
constructor(public navCtrl: NavController, private _currentUser: CurrentUser) {
}
profile: IProfile;
ngOnInit(): any {
this.profile = this._currentUser.getProfile();
console.log(this.profile);//returns undefined
}
}
_
まず、getProfile
関数からthis.local.get("user-profile")
promiseを返して、呼び出し時にチェーンできるようにする必要があります。その後、.then
成功コールバックでgetProfile
関数から返されたデータを取得できます。
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
);
さらに、ajaxを作成するとすぐにデータを取得できなくなり、成功すると応答を取得できます
ngOnInit(): any {
this._currentUser.getProfile().then(
value => { console.log(value) }
)
}
関数getProfileはpromiseを返しません。何も返しません。に変更する必要があります
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
これでコンポーネント内で、プロファイルpromise変数からデータを抽出できます。
ngOnInit(): any {
this._currentUser.getProfile().then(value => {
console.log(value); //returns your value.
}