我正在尝试创建一个订阅激活路由中的id url参数的组件,然后使用它来调用我的服务,该服务向具有id的服务器发出http请求。
我有一个像这样的ID的路由 - / article / view / 1005
以前,我没有订阅url参数,我只是从网址抓取id。
这是该课程中的代码:
ngOnInit() {
var id = +this.activatedRoute.snapshot.params["id"];
if (id) {
this.articleService.get(id).subscribe(
article => this.article = article
);
}
else if (id === 0) {
console.log("id is 0: switching to edit mode...");
this.router.navigate(["article/edit", 0]);
}
else {
console.log("Invalid id: routing back to home...");
this.router.navigate([""]);
}
}
但是,我遇到过这样的情况,即相同的组件可以重复路由,但每次都有不同的ID,而ngOnInit挂钩只是第一次触发。所以我想订阅url参数中的id来解决这个问题。
我尝试找到解决方案,看起来平面图就像我想要使用的那样。但是,我无法找到一个很好的来源,显示如何将订阅链接到这样的网址参数
this.activatedRoute.params.subscribe((params: Params) => {
id = params['id'];
console.log(params);
})
订阅我的文章服务。
答案 0 :(得分:0)
您可以使用以下路线解析
export const appRoutes: Routes = [
...
{
path: 'path1/:id',
component: YourComponent,
resolve: {
someObject: ComponentResolve
}
}
];
@Injectable()
export class ComponentResolve implements Resolve<Interface> {
constructor(private yourService: YourService) {}
resolve(route: ActivatedRouteSnapshot) {
return this.yourService.getMethod(route.params['id']);
}
在你的onInit()中订阅属性为 someObject 的路径数据。