如何使用 "complete Url"(带参数的 url)在 Angular 中导航
How to use a "complete Url" (url with params) for navigation in Angular
我的搜索页面有很多过滤选项,这些选项都作为搜索页面上的参数传递给 url(因此可以共享搜索)。当转到搜索结果中一行的详细信息页面时,我正在将搜索结果的完整 Url 作为参数解析到详细信息页面 (detail/1?returnUrl= %2Fsearch%2Fresults%3Fsw%3D%26n%3D%26ee%3D2%26a....),以便返回(在详细信息页面上有一些选项卡可以使用 router[=36= 导航到) ], 所以我无法使用任何历史记录返回搜索结果)。
问题是,我的详细信息页面上有一个完整的 URL(例如 /search/result?a=1&b=people&c=8&d=all&p1=1),我该如何导航到该页面url?
如果我把它放在路由器中link="/search/result?a=1&b=people&c=8&d=all&p1=1" 它不工作。
提前致谢:)
更新
我尝试了以下方法,但没有用:
public goBack() {
const returnUrl = this.activatedRoute.snapshot.queryParamMap.get('returnUrl');
const array1 = returnUrl.split('?');
const array = array1[1].split('&');
let parameters = '';
array.forEach(param => {
const param1 = param.split('=');
parameters += `${param1[0]}:'${param1[1]}',`;
});
this.router.navigate([array1[0]], { queryParams: {parameters} });
}
它在URL中写入如下link:
编辑:对您更新后的问题的回答
Angulars 路由器中的方法 navigate
接受 Params
作为 属性 queryParams 的参数——不是字符串。
public goBack() {
const returnUrl = this.activatedRoute.snapshot.queryParamMap.get('returnUrl');
const array1 = returnUrl.split('?');
const array = array1[1].split('&');
let parameters = {};
array.forEach(param => {
const param1 = param.split('=');
parameters[param1[0]] = param1[1];
});
this.router.navigate([array1[0]], { queryParams: parameters });
}
以下:对问题的回答与之前制定的一样
查询参数应该自己传递属性。
查看 https://angular.io/api/router/RouterLink#description
中的示例
<a [routerLink]="['/search/result']" [queryParams]="{ 'a': 1, 'b': 'people', 'c': 8, 'd': 'all', 'p1': 1}">
Products
</a>
我的搜索页面有很多过滤选项,这些选项都作为搜索页面上的参数传递给 url(因此可以共享搜索)。当转到搜索结果中一行的详细信息页面时,我正在将搜索结果的完整 Url 作为参数解析到详细信息页面 (detail/1?returnUrl= %2Fsearch%2Fresults%3Fsw%3D%26n%3D%26ee%3D2%26a....),以便返回(在详细信息页面上有一些选项卡可以使用 router[=36= 导航到) ], 所以我无法使用任何历史记录返回搜索结果)。
问题是,我的详细信息页面上有一个完整的 URL(例如 /search/result?a=1&b=people&c=8&d=all&p1=1),我该如何导航到该页面url?
如果我把它放在路由器中link="/search/result?a=1&b=people&c=8&d=all&p1=1" 它不工作。
提前致谢:)
更新
我尝试了以下方法,但没有用:
public goBack() {
const returnUrl = this.activatedRoute.snapshot.queryParamMap.get('returnUrl');
const array1 = returnUrl.split('?');
const array = array1[1].split('&');
let parameters = '';
array.forEach(param => {
const param1 = param.split('=');
parameters += `${param1[0]}:'${param1[1]}',`;
});
this.router.navigate([array1[0]], { queryParams: {parameters} });
}
它在URL中写入如下link:
编辑:对您更新后的问题的回答
Angulars 路由器中的方法 navigate
接受 Params
作为 属性 queryParams 的参数——不是字符串。
public goBack() {
const returnUrl = this.activatedRoute.snapshot.queryParamMap.get('returnUrl');
const array1 = returnUrl.split('?');
const array = array1[1].split('&');
let parameters = {};
array.forEach(param => {
const param1 = param.split('=');
parameters[param1[0]] = param1[1];
});
this.router.navigate([array1[0]], { queryParams: parameters });
}
以下:对问题的回答与之前制定的一样
查询参数应该自己传递属性。
查看 https://angular.io/api/router/RouterLink#description
中的示例<a [routerLink]="['/search/result']" [queryParams]="{ 'a': 1, 'b': 'people', 'c': 8, 'd': 'all', 'p1': 1}">
Products
</a>