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

onChange() should match the last typed alphabet, not the entire line every time

说明: 我正在使用 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)

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

您可以试试这个来查找最后的字母表。

onChange(eve) {   
  eve = eve.split('')[eve.length-1] 
  if(eve.match(/@/g).length > 0) 
  ...
}

您可以使用按键事件:

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

那你可以这样处理:

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

但是如果您只想检查字符串中的最后一个字符是否有 onChange,那么您可以这样做:

if(eve.slice(-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