我使用angular2
如果网址是这样的:
URL排序= FIELD1,ASC&安培;排序= FIELD2,递减
我用
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"表格排序:" [对象对象]"
答案 0 :(得分:1)
参数永远只是字符串。没有办法解决这个问题。因此,当您尝试将对象作为param值传递时,它只会在对象上调用# ö is encoded with C3 B6
var_dump(preg_match('~[ö]~', "\xC3"));
# int(1)
var_dump(preg_match('~[ö]~u', "\xC3"));
# bool(false)
,默认为Object.toString
。如果您有课程,则可以覆盖[object Object]
。也许像是
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}`;
}
}
Angular会在创建查询参数时调用this.router.navigate(['...'], { queryParams: { sort: new Sort('field1', 'desc') }});
实例上的toString
。然后在接收方,只需拨打Sort
。