onChange()应该匹配最后键入的字母,而不是每次都匹配整行

问题描述 投票:1回答:3

说明:我正在使用onChange函数来查找是否有人键入@

问题:在我键入时,每次都会检查整行,这会使键入变慢。我想修改我的代码,以便仅检查输入的最后一个字母。

我的代码:

home.html

<ion-textarea #chat [(ngModel)]="tag" rows="1" cols="10" placeholder="Type your message..." (ngModelChange)='onChange($event)'></ion-textarea>

home.ts

onChange(eve)
{
if(eve.match(/@/g).length > 0)

这使打字体验变慢,因为它每次都会检查整行,我希望它应该只检查最后键入的字母

angular typescript ionic-framework ionic2 ionic3
3个回答
1
投票

尝试这样:

模板:

<ion-textarea #chat [(ngModel)]="tag" rows="1" cols="10" placeholder="Type your message..." (keydown)="onType($event)"></ion-textarea>

打字稿:

onType(event) {
    if (event.key == '@') {
      console.log("@ typed")
    }
  }

Working Demo


1
投票

您可以使用按键事件:

<input (keydown)="onKeydown($event)">

然后您可以像这样处理它:

onKeydown(event) {
  if(event.key === "@")
  {  
    // your code
  }
}

但是,如果您只想检查字符串中的最后一个字符是否为onChange,则可以这样进行:

if(eve.slice(-1) === '@') {}

0
投票

您可以尝试查找最后的字母。

onChange(eve) {   
  eve = eve.split('')[eve.length-1] 
  if(eve.match(/@/g).length > 0) 
  ...
}
© www.soinside.com 2019 - 2024. All rights reserved.