0

我使用ngx-translate通过我的应用程序翻译关键字,包括标签列表。用户应该能够以任何语言搜索它们。

以前我在做

this.tag_array_filtered = this.tag_array.filter(tag => 
   tag.toUpperCase().includes(this.tag_searched.toUpperCase()));
)

但它只搜索关键字,而不是通过翻译。

这就是我从钥匙中获得翻译的方式

this.translate.get(tag).subscribe(value => {
   console.log(value);
})

该变量tag_array是一个键数组,可以翻译。tag_searched包含用户输入。tag_array_filtered是要显示的键数组(未翻译)

我想做什么:(显然不工作)

 this.tag_array_filtered = this.tag_array.filter(tag => 
    this.translate.get(tag.toUpperCase()).subscribe((value: string) => {
      value.includes(this.tag_searched.toUpperCase())
  })
 )

如何在使用 subscribe 转换值时过滤我的数组?我想将从数组转换的每个值与用户输入进行比较。

我猜我可以用手工制作的循环来做到这一点,但如果已经存在解决方案,它可能会快得多。

4

1 回答 1

0

translate.get()方法还接受一个字符串数组。你可以这样试试。最终输出将是一个对象,如果需要,您可以将其转换为数组。

let tag_array_filtered = this.tag_array.filter(tag => 
 tag.toUpperCase()
    .includes(this.tag_searched.toUpperCase())
    .map(e => e.toUpperCase())
this.translate.get(matching_tags).subscribe((values: {}) => {
  this.tag_array_filtered_object =  values
})

于 2017-11-20T13:44:19.370 回答