2016-10-25 11 views
-1

URLはこのようであれば、私はangular2どのようにこのようなクエリのparam取得angular2 "ソート=フィールド1、ASC&ソート=フィールド2、DESC&ソート= FIELD3を、ASC"

を使用します?

URLソート=フィールド1、私が取得する方法

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 
    } 
} 

を使用ASC &ソート=フィールド2、DESC

"field1、asc"、 "field2、desc"形式sort: "[オブジェクトオブジェクト]"

答えて

1

paramsは常に文字列のみです。その周りに方法はありません。したがって、オブジェクトをparam値として渡そうとすると、オブジェクトのObject.toStringが呼び出されます。デフォルトは[object Object]です。クラスをお持ちの場合は、toStringを上書きできます。あなたが追加したときに、クエリのparamsを作成するときに多分

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') }}); 

は角がSortインスタンス上toStringを呼ぶんPARAMS。受信側でSort.parse(value)に電話するだけです。

関連する問題