在我的Angular应用中,我通过API调用返回结果,并允许用户通过一系列复选框选择来过滤这些结果。现在我遇到了一个问题,当某个过滤器发送一个值时,如果选择了多个值(例如,通过多个邮政编码过滤),结果会按预期返回,我得到零结果印在视图上。没有错误,只是没有结果。
使用Chrome devtools网络标签后,我终于抓了一会儿,我终于确定问题在于,而不是将每个项目包装在有效负载中的引号中 - 就像这样:" 90001",&# 34; 90002",发送的内容是:" 90001,90002"。换句话说,引号被包裹起来就好像它是一个值,而不是两个。
这是代码,我使用" join"将所选值组合在一起:
this.sendZipcode.emit(this.zipcodeFilters.text = arr.length === 0 ? undefined : arr.join(','));
我不确定如何调整此方式"加入"构造,或找到一些其他解决方案,而不是"加入",以使每个项目用引号括起来,而不是像一个长字符串一样包裹。
仅供参考,这是我在选择两个zipcode后在Chrome devtools的网络标签中看到的内容。正如我所解释的那样,它被包裹成一个字符串,而不是两个值:
addresses.zipCode: {$in: ["90001, 90002"]}
答案 0 :(得分:1)
Timer
将返回一个字符串。因此,您要将数组转换为单个字符串,该字符串将作为字符串发送。你想发送一个数组。只需移除Array.prototype.join
来电并直接返回join
。
字符串:"值,值"
数组:"价值","价值"