我想使用ActivatedRoute在服务中获取路由参数,就像在Component中一样。
但是,当我在服务中注入(inject)ActivatedRoute对象时,它包含一个空的params变量
我创建了一个重现此行为的插件:
http://plnkr.co/edit/sckmDYnpIlZUbqqB3gli
请注意,其目的是在服务中而不是在组件中使用参数,punker的设置方式纯粹是为了演示问题。
组件(检索到test
):
export class Component implements OnInit {
result: string;
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
this.route.params.subscribe(params => {
this.result = params['test'];
});
}
}
服务(未检索
test
为):export class Service {
result: string;
constructor(private route: ActivatedRoute) {
this.getData();
}
getData() {
this.route.params.subscribe(params => {
this.result = params['test'];
});
}
}
最佳答案
Service
是属于根注入(inject)器的单例,并被注入(inject)root ActivatedRoute
instance。
导出有自己的喷射器和own ActivatedRoute
instance。
The solution here是让路由组件具有自己的Service
实例:
@Component({
...
providers: [Service]
})
export class MainComponent { ... }