Javascript 如何在angular中开始导航之前添加查询参数
假设我有两个组件Javascript 如何在angular中开始导航之前添加查询参数,javascript,angular,typescript,angular-router,query-parameters,Javascript,Angular,Typescript,Angular Router,Query Parameters,假设我有两个组件A和B。组件A导航到/A?random=random,组件B导航到/B。我想在导航开始之前添加authUserquery参数,这样最终结果应该分别如下所示/a?random=random&authUser=1,/b?authUser=1。 问题是组件A的url在附加authUserqueryParam not/A?random=random&authUser=1后看起来像这样 这里是链接 我不想对组件A和B导航方法进行更改,因为在实际应用程序中,我必须对每个导航方法进行更改,这将
A
和B
。组件A导航到/A?random=random
,组件B导航到/B
。我想在导航开始之前添加authUser
query参数,这样最终结果应该分别如下所示/a?random=random&authUser=1
,/b?authUser=1
。
问题是组件A
的url在附加authUser
queryParam not/A?random=random&authUser=1
后看起来像这样
这里是链接
我不想对组件
A
和B
导航方法进行更改,因为在实际应用程序中,我必须对每个导航方法进行更改,这将是一个糟糕的做法。exampe fo query paramthis.router.navigate([
/${this.appStatus.baseUrl}/predict/result]),{queryParams:{vsgid:vsgid,sid:sid,logo:logo});
例如查询参数this.router.navigate([
/${this.appStatus.baseUrl}/predict/result],{queryParams:{vsgid:vsgid,sid:sid,logo:logo});
对不起,我没有收到。对不起,我没有收到。
// App component
ngOnInit() {
this.router.events.subscribe((event) => {
if(event instanceof NavigationStart) {
if (!event.url.includes('authUser')) {
// remove queryParams
const url = event.url.split('?')[0];
if (url !== '/') {
// /a/etc => ['a','etc']
const newUrl = url.split('/').filter(_subUrl => _subUrl);
this.router.navigate(newUrl, { queryParams: { authUser: '1' }, queryParamsHandling: 'merge' });
}
}
}
})
}
navigateToA() {
this.router.navigate(['a'], { queryParams: { random: 'random' } });
}
navigateToB() {
this.router.navigate(['b']);
}