任何人都可以帮助,
所以我已使用@ ngx-pwa将登录数据存储在名为login的本地存储密钥中
在这里我试图获取这些数据并显示它,但是我却无法定义!
public customerProfile
ngOnInit() {
this.getProfileData();
console.log(this.cutomerProfile) //shows undefined
}
getProfileData() {
this.localStorage.getItem('login').subscribe((login) => {
this.customerProfile = login;
console.log(this.customerProfile.user) //shows login data
})
}
答案 0 :(得分:5)
问题是,由于console.log()
尚未准备就绪,因此您目前未设置ngOnInit()
this.cutomerProfile
处的this.localStorage.getItem('login')
。
使用回调可能是您的解决方案:
public customerProfile
ngOnInit() {
this.getProfileData(() => console.log(this.cutomerProfile));
}
getProfileData(cb) {
this.localStorage.getItem('login').subscribe((login) => {
this.customerProfile = login;
console.log(this.customerProfile.user) //shows login data
cb();
})
}
您也可以使用承诺:
public customerProfile
ngOnInit() {
this.getProfileData().then(() => console.log(this.cutomerProfile));
}
getProfileData() {
return new Promise((resolve, reject) => {
this.localStorage.getItem('login').subscribe((login) => {
this.customerProfile = login;
console.log(this.customerProfile.user) //shows login data
resolve();
})
});
}
答案 1 :(得分:3)
如果需要,可以使用Promise
和async/await
函数。
public customerProfile;
async ngOnInit() {
this.customerProfile = await this.getProfileData();
// The console.log (next line) will wait for the promise to be resolved.
console.log(this.customerProfile); }
getProfileData() {
return new Promise((resolve, reject) => {
this.localStorage.getItem('login').subscribe((login) => {
resolve(login);
})
});
}
答案 2 :(得分:0)
记录customerProfile值的最简单解决方案是调用一个函数,该函数从this.localStorage.getItem()中记录该变量,该函数是异步的,因此在获取存储的项目后,将像下面这样调用该回调函数:
ngOnInit() {
this.getProfileData();
}
getProfileData() {
this.localStorage.getItem('login').subscribe((login) => {
this.customerProfile = login;
console.log(this.customerProfile.user) ;
callback();
})
}
callback(){
console.log(this.cutomerProfile);
}