【发布时间】:2018-07-19 19:12:08
【问题描述】:
我很困惑为什么变量不成立。
我有一个变量 user,它分配有 userData() 中的数据。但在构造函数和 ProfilePage 中的控制台日志时,它是未定义的。
share-service.ts
export class ShareService {
uid: string;
user;
constructor(public db: AngularFireDatabase) {
let currentUser = firebase.auth().currentUser;
this.uid = currentUser.uid;
this.userData();
console.log('[constructor]user: ', this.user);
}
userData() {
this.db.object(`users/${this.uid}`).snapshotChanges().subscribe(data => {
this.user = data.payload.val();
console.log('[userData]user: ', this.user);
});
}
getUser() {
return this.user;
}
}
profile.ts
export class ProfilePage {
user;
constructor(public navCtrl: NavController, public firebaseService: FirebaseService, shareService: ShareService) {
console.log('[profile.ts]', shareService.getUser());
}
}
- “angularfire2”:“5.0.0-rc.4”,
- “firebase”:“4.8.2”,
- “离子角”:“3.9.2”,
- "rxjs": "^5.5.6",
- "@ionic/app-scripts": "3.1.8",
- “打字稿”:“2.4.2”
我已经尝试搜索类似的问题,例如 this 并读到它与角度如何异步有关,然后经过进一步调查,我读到 promise 需要像this。我还在某处读到应该使用 .then()。
我尝试了几种方法来将它们实现到这个用例场景中,但结果都出现了语法错误。
需要建议,请。
【问题讨论】:
-
我不知道你想做什么,但你在那里有一个可观察的,而不是一个承诺。你有什么问题?
-
@AlanGrosz 我有一个变量 user,它分配有 userData() 中的数据。但是在构造函数中控制台日志时它是未定义的
-
您究竟想在哪里访问
this.user?在构造函数中? -
@SurajRao 通过导入
import {ShareService } from '../../providers/share-service/share-service'访问其他页面,然后通过调用shareService.getUser();获取 -
检查我的答案.. 致电
getUser().then(data=> //in here)
标签: javascript angular typescript asynchronous ionic-framework