gpt4 book ai didi

angular - 当前激活路由的 Observable?

转载 作者:行者123 更新时间:2023-12-04 01:56:58 24 4
gpt4 key购买 nike

出于各种目的,将监听器附加到每次路由更改时调用的路由器可能是有利的。例如,这可用于触发 AJAX 调用。

令人费解的是,route.params observable 和 route.url observable 不会在路由更改时更新,这使得它们不适合此任务。

考虑以下服务,

@Injectable()
export class SagasService {
constructor(private http: HttpClient, private route : ActivatedRoute, private router : Router ){
Observable.combineLatest(
route.params,
route.url
)
.subscribe(([params,url])=>{
console.log(params,url);
});
router.events.subscribe(e=>{
Observable.combineLatest(
route.params,
route.url
)
.subscribe(([params,url])=>{
// the route changes... but this... it does not trigger
console.log(params,url);
});
}
}

在此示例中,两个 订阅调用均未使用新参数进行更新。订阅路由器状态的持续图片的正确方法是什么?

最佳答案

为此你需要订阅路由器事件,

import 'rxjs/add/operator/filter';
Injectable()
export class SagasService {
constructor(private http: HttpClient, private route : ActivatedRoute, private router : Router ){
// navigation start
router.events.filter(event => event instanceof NavigationStart)
.subscribe(() => {
// add your logic here
});
//navigation ends here
router.events
.filter(event => event instanceof NavigationEnd)
.subscribe(() => {
// add your logic here
});


}
}

当路由器启动从一条路线到另一条路线的导航时,导航开始事件会触发。导航结束事件在路由器导航结束时触发。我们可以根据我们的要求添加我们的逻辑。希望对您有所帮助。

关于angular - 当前激活路由的 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49880705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com