Je me familiarise avec Angular2, Ionic2 et Peut-être que je ne comprends pas bien quelque chose mais espérais de l'aide.
J'ai un fournisseur appelé «CurrentUser» dans le but de stocker et d'obtenir des données LocalStorage.
getProfile(): any {
this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
}
cette fonction getProfile()
renvoie une promesse
Si j'injecte ce fournisseur dans un composant. Comment pourrais-je attendre la promesse de résoudre avant d'affecter les données lors de l'appel de cette fonction depuis le composant?.
@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
}
}
Tout d’abord, vous devez renvoyer this.local.get("user-profile")
promise à partir de la fonction getProfile
afin qu’elle puisse être chaînée lorsque vous appelez. Ensuite, vous pouvez obtenir les données renvoyées par la fonction getProfile
dans le rappel .then
success.
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
);
De plus, vous ne pouvez pas obtenir de données dès que vous créez un fichier ajax. En cas de succès, vous pouvez obtenir la réponse.
ngOnInit(): any {
this._currentUser.getProfile().then(
value => { console.log(value) }
)
}
Votre fonction getProfile ne renvoie aucune promesse. Il ne retourne rien ..__ Vous devriez le changer en
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
Désormais, dans votre composant, vous pouvez extraire les données de la variable de promesse de votre profil.
ngOnInit(): any {
this._currentUser.getProfile().then(value => {
console.log(value); //returns your value.
}