手动创建路由更改流而不是像 Angular 指南建议的那样使用内置的 @angular/router 的 ActivatedRoute 背后的动机是什么?
export class HeroListComponent implements OnInit {
heroes$: Observable<Hero[]>;
private selectedId: number;
constructor(
private service: HeroService,
private route: ActivatedRoute
) {}
ngOnInit() {
this.heroes$ = this.route.paramMap
.switchMap((params: ParamMap) => {
// (+) before `params.get()` turns the string into a number
this.selectedId = +params.get('id');
return this.service.getHeroes();
});
}
}
几个月来,我参与了不同的项目,并看到开发人员通过创建路由更改流来控制路由更改,通常您会看到如下内容:
this.route_sub$ = this.route$
.filter((value) => value.params.hasOwnProperty('id') && value.params.hasOwnProperty('date_id'))
.subscribe((value) => {
this.store.dispatch(SomethingEventActions.view({ id: value.params.id }));
我通常会收到这样的回复:
路由变化是状态变化,所以应该由状态管理来处理
想法?