2017-09-03 2 views
3

にHTTPリクエストに含まれていない私は、次のプロバイダを持っている角度とイオン2の奇妙な問題があります。カテゴリがallある場合、期待どおり、プロバイダが働く特定のパラメータは角

getTransportations = function (category, maxResults) {  
    let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}`; 
    if (category !== 'all') { 
     let search = { 
     field_filters: [{ 
      key: '2', 
      operator: 'is', 
      value: category 
     }] 
     }; 
     let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`; 
     console.log(url); 

    } 
    let headers: Headers = new Headers(); 
    headers.append("Authorization", "Basic " + this.bt); 
    headers.append("Content-type", "application/json"); 
    return this.http.get(url, { 
     headers: headers 
     }) 
     .map(response => response.json()) 

    }; 

を。しかし、カテゴリが何か他のものであれば、Chromeの開発ツールの[ネットワーク]タブで、検索パラメータなしで呼び出されたURLを見ることができます。ちょうど_labelspaging。しかし、console.log私はifの作品の中に追加し、それは私が郵便配達でそれを使用する場合、私は欲しいフィルタ結果を取得する右のURLを印刷します。

私は文字列を連結するためにさまざまな方法を試みましたが、私は常に同じ問題を抱えています。

+0

"検索パラメータなし" でなければなりません。あなたは何を正確に見ますか? –

+0

クエリ文字列パラメータ: '_labels = 1&paging [page_size] = 15' – Tasos

+0

これは不可能です。テンプレートリテラル文字列の変数に依存しないため、少なくとも'&search = 'は出力する必要があります。 –

答えて

1

スコープに問題があります。 letはブロックスコープです。

let url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`; 

は、if (...) { ... }に属するスコープを持ちます。これらの2つのurlは異なる変数であり、if内に割り当てられている変数は使用されません(console.logを除く)。

それは

url = `${this.domain}/wp-json/gf/v2/forms/1/entries?_labels=1&paging[page_size]=${maxResults}&search=${encodeURI(JSON.stringify(search))}`; 
+0

URLのコード行を貼り付けたときに 'let'を削除するのを忘れたとは思えません。本当にありがとう。 – Tasos

+0

@Tasosようこそ。私は通常、let ...と一貫してlet 'let urlを使用します。 if(...)url = ... else url = ... '。これはもう少し冗長ですが、両方の条件を等しく扱い、そのような状況を防ぎます。私はおそらく同様の事故の後にそれをやり始めました。 – estus

+0

良い点。提案していただきありがとうございます。私はおそらく今からそれを続けるだろう – Tasos

関連する問題