亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當輸入為空時,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 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號