我的应用设置为在顶部点击链接时过滤不同的项目。这是通过获取路由参数然后将其传递给我的组件来完成的。然后,我的组件根据提供的参数过滤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' }
];