angular2 如何像这样获取查询参数 "sort=field1,asc&sort=field2,desc&sort=field3,asc"
How angular2 get query-param like this "sort=field1,asc&sort=field2,desc&sort=field3,asc"
我用angular2
如果 url 是这样的:
url?sort=field1,asc&sort=field2,desc
我用
getParams() {
if (this.route.snapshot.queryParams) {
console.log(this.route.snapshot.queryParams)
// it print like this : sort: "[object Object]"
console.log(typeof this.route.snapshot.queryParams['sort']); // is string
}
}
如何获取 "field1,asc" 和 "field2,desc" 形式 排序:“[object Object]”
参数始终只是字符串。没有办法解决这个问题。因此,当您尝试将对象作为参数值传递时,它只会调用对象上的 Object.toString
,默认为 [object Object]
。如果您有 class,则可以覆盖 toString
。也许像
class Sort {
constructor(public field: string, public order: string) {}
static parse(value: string): Sort {
const split = value.split(',');
return new Sort(split[0], split[1]);
}
toString() {
return `${this.field},${this.order}`;
}
}
然后当您添加查询参数时,只需执行
this.router.navigate(['...'], { queryParams: { sort: new Sort('field1', 'desc') }});
Angular 将在创建查询参数时调用 Sort
实例上的 toString
。然后在接收方,只需调用 Sort.parse(value)
.
我用angular2
如果 url 是这样的:
url?sort=field1,asc&sort=field2,desc
我用
getParams() {
if (this.route.snapshot.queryParams) {
console.log(this.route.snapshot.queryParams)
// it print like this : sort: "[object Object]"
console.log(typeof this.route.snapshot.queryParams['sort']); // is string
}
}
如何获取 "field1,asc" 和 "field2,desc" 形式 排序:“[object Object]”
参数始终只是字符串。没有办法解决这个问题。因此,当您尝试将对象作为参数值传递时,它只会调用对象上的 Object.toString
,默认为 [object Object]
。如果您有 class,则可以覆盖 toString
。也许像
class Sort {
constructor(public field: string, public order: string) {}
static parse(value: string): Sort {
const split = value.split(',');
return new Sort(split[0], split[1]);
}
toString() {
return `${this.field},${this.order}`;
}
}
然后当您添加查询参数时,只需执行
this.router.navigate(['...'], { queryParams: { sort: new Sort('field1', 'desc') }});
Angular 将在创建查询参数时调用 Sort
实例上的 toString
。然后在接收方,只需调用 Sort.parse(value)
.