我的应用程序设置为在顶部点击链接时过滤不同的项目。这通过接收一个路由参数并将其传递给我的组件完成。我的组件然后根据提供的参数筛选数据库查询OnInit。这一切都很好,但我遇到的问题是,当我在子路由之间移动时,ngOnInit并未被解雇。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' }
];
谢谢!我能够把你的话说出来并弄清楚。我仍然从OnInit调用所有的东西。 OhChanges似乎杀了我的查询请求并且什么也没有返回。 – Jleibham
你是怎么做到的? – chrismarx