我有ProjectModule。在加载之前,此模块中的每个页面都需要projectService.projectData
属性。
ProjectComponent
ngOnInit() {
this.af.auth.subscribe(auth => {
this.route.params.forEach((params: Params) => {
let name = params['name'];
if (name) {
this.projectService.getProject(name);
}
});
});
}
ProjectService
getProject(name) {
//Friendly URL to ID
this.af.database.object('/friendly_urls/' + name).take(1).subscribe((data) => {
//ID to data
this.af.database.object('/projects/' + data.$value).take(1).subscribe((projectData) => {
this.projectData = projectData;
});
},
error => {
console.log(error);
/* TODO: Permission blocked page */
this.router.navigate(['']);
});
}
我必须在每个组件中创建getProject(name)
方法来获取项目数据。
如何确保在访问任何路由之前从服务中获取projectData
?
是否可以在每个组件subscribe
中没有ngOnInit
服务的情况下实现它?