我的Angular项目中有多个服务和页面。
Pages:
1) Login
2) Dashboard
3) Order List
Services:
1) UserService
2) OrderService
访问OrderListPage的正确过程是:
1)登录-userServices
已初始化
2)系统将用户重定向到仪表板-OrderService
在调用内部函数之前已初始化
3)用户转到订单列表-OrderService
中的功能已准备好为OrderList > ngOnInit()
执行功能
我有一个问题,如果用户直接进入http://localhost:4200/orderList
页面而不经过处理1和2,则OrderService
尚未初始化,因此在{{1 }}从ngOnInit()
开始,它将出现错误OrderListPage
。
我的"Cannot read property 'child' of undefined"
:
order.service.ts
我的currentUser
iwoRef
constructor() {
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.currentUser = user;
this.iwoRef = firebase.database().ref(`/iwo`);
console.log('order services loaded')
}
else{
return false
}
});
}
getIwo(iwo){
return this.iwoRef.child('stock')
}
:
order-list.component.ts
我的错误序列在Chrome控制台中显示:
constructor(private orderService: OrderService) { }
ngOnInit() {
this.orderService.getIwo().on('value',snap>{
console.log(snap.val())
})
}
如果用户执行流程1、2、3,则不会出现上述问题,我怀疑是因为orderService已在DashboardPage中完全初始化。
我确实尝试过在订单列表页面中使用其他Angular Life Cycle函数来执行> Cannot read property 'child' of undefined --order.service.ts
> order services loaded --order.service.ts
,但是它没有按预期工作:
ngDoCheck,ngAfterContentInit,ngAfterContentChecked,ngAfterViewInit,ngAfterViewChecked
请告知。
谢谢!
答案 0 :(得分:0)
您需要初始化iwoRef
this.iwoRef = firebase.database().ref(`/iwo`);
更改身份验证?
如果没有,则将其移到
之外onAuthStateChanged
它将在不更改身份验证的情况下进行初始化。