angular2如何得到这样的查询参数" sort = field1,asc& sort = field2,desc& sort = field3,asc"

时间:2016-10-25 10:39:04

标签: angular angular2-routing queryparam

我使用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"表格排序:" [对象对象]"

1 个答案:

答案 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