Angular 2:在MainComponent中为所有路由订阅一次

时间:2016-10-19 18:12:15

标签: angular

我有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服务的情况下实现它?

0 个答案:

没有答案