服务中的 ActivatedRoute
问题
我试图在服务中使用 ActivatedRoute 并注意到它似乎没有跟踪我当前所在的路线。事实上,它似乎不会选择任何路线。我花了很长时间才弄清楚发生了什么,而且我无法在网上找到很多有用的答案(可能是因为大多数人都比我快得多:))。
只是想确保我发布了一些内容,以便其他人可以更快地找到解决方案。
这是我遇到问题时代码的样子。
@Injectable()
export class ImdbService {
constructor(private router: Router,
private route: ActivatedRoute) {
}
closeDetails(): void {
this.detailsOpened = false;
this.router.navigate(['../'], {relativeTo: this.route});
}
最佳答案
我的解决方案
因为服务在注入(inject)组件时似乎与 ActivatedRoute 没有相同的交互,我的解决方案是在我使用的服务调用中将 ActivatedRoute 作为参数传递。
这是对我有用的解决方案:
@Injectable()
export class ImdbService {
constructor(private router: Router) {
}
closeDetails(currentRoute): void {
this.detailsOpened = false;
this.router.navigate(['../'], {relativeTo: currentRoute});
}
在组件中:
export class MovieDetailsComponent implements OnInit, OnDestroy {
constructor(..., private route: ActivatedRoute ) { }
closeDetails() {
this.imdbService.closeDetails(this.route);
}
有更好的东西吗?
如果有人对此问题有更好甚至不同的解决方案,或者如果有充分的理由以完全不同的方式做到这一点,我很乐意看到它。
关于angular - ActivatedRoute 在服务中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47718356/