代码之家  ›  专栏  ›  技术社区  ›  RV.

角度-在输入更改时进行服务调用

  •  0
  • RV.  · 技术社区  · 6 年前

    我想检测输入的文本是否在Angular中的onBlur事件中发生了更改。 如果是,则执行一些操作:

    模糊处理条件:

    • 仅当文本输入已更改时,它才应捕获/处理。
    • 如果输入没有改变,就不应该进行处理。

    下面是已建立模糊事件的代码版本的stackblitz链接。但即使输入没有更改,它也会登录到控制台:

    https://stackblitz.com/edit/angular-ngmodelchange-blur-8er79o?file=app/app.component.ts

    1 回复  |  直到 6 年前
        1
  •  4
  •   ConnorsFan    6 年前

    你能做什么:

    1. 当元素聚焦时,保存当前值
    2. 当元素失去焦点时,将当前值与保存的值进行比较
    3. 如果值已更改,则执行处理
    <input (focus)="saveValue()" (blur)="processChange()" [(ngModel)]="someValue" ... />
    
    someValue = "nice";
    prevValue = this.someValue;
    
    saveValue() {
      this.prevValue = this.someValue;
    }
    
    processChange() {
      if (this.someValue !== this.prevValue) {
        console.log("The value has changed!!!");
        // Do some additional processing...
      }
    }
    

    看到了吗 this stackblitz


    如果不想更改组件代码,请将值保存在元素的属性中:

    <input #txt type="text" name="field" 
      (focus)="txt.setAttribute('data-value', someValue)" 
      (blur)="txt.getAttribute('data-value') !== someValue ? processChange() : ''" 
      [(ngModel)]="someValue" />
    

    看到了吗 this stackblitz