ngOnInit不会在子路由之间触发一次更改

时间:2016-12-03 19:35:01

标签: angular

我的应用设置为在顶部点击链接时过滤不同的项目。这是通过获取路由参数然后将其传递给我的组件来完成的。然后,我的组件根据提供的参数过滤db查询OnInit。这一切都很好,但我遇到的问题是当我在子路径之间移动时,ngOnInit没有被触发。

ngDoCheck似乎是我需要使用的东西,但是在加载应用程序并因为projectService未完成而导致应用程序被破坏时会被触发。有没有办法强制ngDoCheck等到项目加载后再开始监听? Angular网站表示它已经应该这样做,但从我看到它不是。

关于我应该如何正确实现这一点的任何建议?

组件

  ngOnInit() {
    this.paramsSub = this.activatedRoute.params.subscribe(params => this.pageCategory = params['id']);
    this.getProjects();
  }

  getProjects() {
    if (this.pageCategory) {
      this.projectService.getProjects()
        .subscribe(
        projects => this.projects = projects.filter(project => project.category.includes(this.pageCategory)),
        error => this.errorMessage = <any>error);
    } else {
      this.projectService.getProjects()
        .subscribe(
        projects => this.projects = projects,
        error => this.errorMessage = <any>error);
    }
  }

路线

const routes: Routes = [
  { path: '',
    children: [{
      path: ':id',
      component: HomeComponent,
    }]
  },
  { path: '', component: HomeComponent },
  { path: '**', redirectTo: '', pathMatch: 'full' }
];

0 个答案:

没有答案