为了账号安全,请及时绑定邮箱和手机立即绑定

当输入为空时,ngbtypeahead 函数返回 TypeError

当输入为空时,ngbtypeahead 函数返回 TypeError

RISEBY 2021-12-23 18:06:09
我在 Angular 8 项目https://ng-bootstrap.github.io/#/components/typeahead/examples 中使用来自 ng-bootstrap 的 typeahead 元素。我正在使用库示例中给出的函数,但如果我的输入之一为空,我会收到错误消息。我的组件类中有一个变量,它是用一个函数构建的:searchAutofill = (text$: Observable<string>) =>    text$.pipe(      debounceTime(200),      distinctUntilChanged(),      map(term => term.length < 1 ? []        : this.option.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 15))    )option 是一个字符串数组,例如:[    "tom",    "bob",    "foo",    "emma",    null,    "john",    "hello",    "example",当函数达到空值时,它返回ERROR TypeError: "v is null"。如何更改我的代码以接受/忽略空值?
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

是的,因为您尝试对 'null' 值执行 String 方法。

所以在这里v.toLowerCase()你得到null.toLowerCase().

每当您访问对象的任何属性或方法时,您必须确保该对象是您期望的对象。否则设置一些规则来检查,

在您的情况下,您似乎想检查字符串中v是否有保存在term变量中的子字符串。

所以我猜你想返回falseifvnull

filter(v => v && v.toLowerCase().indexOf(term.toLowerCase()) > -1)

ps 请注意,这里我只是检查是否v不是假值。您可能需要添加其他规则来检查它是否是字符串。例如:

typeof v === 'string'


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信