2017-04-25 10 views
-2

私のAngularアプリでは、APIコールを介して結果を返し、一連のチェックボックスでこれらの結果をフィルタリングすることができます。今、私は問題に遭遇していますが、特定のフィルタに対して1つの値が送信されたときに結果が返される一方、複数の値が選択されたとき(たとえば、複数の郵便番号でフィルタリングされた場合など)景色。エラーはなく、結果はありません。個々の値の代わりに1つの文字列として送信される出力値

Chrome devtoolsの[ネットワーク]タブを使用してしばらく私の頭を傷つけた後、私は最終的にペイロードの各項目を引用符で囲むのではなく、その問題であると判断しました。 "90001"、 "90002"これは「90001,90002」です。言い換えれば、引用符は2つではなく1つの値のようにラップされます。

これは私が一緒に選択された値を入れて、「参加」を使用しているコードです:

this.sendZipcode.emit(this.zipcodeFilters.text = arr.length === 0 ? undefined : arr.join(',')); 

私は、この「参加」である方法を調整することができますかわかりませんそれぞれの項目を1つの長い文字列のようにラップするのではなく、引用符で囲むために、 "join"の代わりにいくつかの他の解決策を見つけてください。

これは、2つの郵便番号を選択した後、Chrome devtoolsの[ネットワーク]タブに表示されます。

addresses.zipCode: {$in: ["90001, 90002"]} 

答えて

1

Array.prototype.join文字列を返します:私が説明したように、2つの値ではなくて、それは、1つの文字列のように包まれています。したがって、配列を文字列として送信されている単一の文字列に変換しています。あなたは配列を送ろうとしています。単にjoinコールを削除し、arrを直接返すだけです。

文字列: "値、値"

アレイ: "値"、 "値"

+0

おかげ@ChrisG。私はそれを試してみましょう。 – Muirik

+0

だから、このようなものを送りますか? this.sendZipcode.emit(this.zipcodeFilters.text = arr.length === 0?undefined:arr); – Muirik

関連する問題