簡體   English   中英

Angular2輸入兩次方法

[英]Angular2 Input call twice a method

為什么這段代碼兩次調用方法'addHero'?

        @Component({
      selector: 'little-tour',
      template: `
        <input #newHero
          (keyup.enter)="addHero(newHero.value); newHero.value='' "
          (blur)="addHero(newHero.value); newHero.value='' ">
        <button (click)=addHero(newHero.value)>Add</button>
        <ul><li *ngFor="let hero of heroes">{{hero}}</li></ul>

        <p>{{pressed}}</p>
      `
    })
    export class LittleTourComponent {
        number = 1;
        pressed='';
      heroes = ['Windstorm', 'Bombasto', 'Magneta', 'Tornado'];
      addHero(newHero: string) {
          if (newHero) {
            if (this.heroes.join('').indexOf(newHero) < 0) {
                this.heroes.push(newHero);
            }
            this.pressed+=' **(into IF)** ';
        }
        //newHero= " ";

        this.pressed+='pressed ' +this.number+', ';
        this.number++;
      }
    }

這是一個例子:

(進入IF)按下1,按下2, (進入IF)按下3,按下4

在代碼上,您可以通過三種不同的方式來調用addHero

  • 輸入聚焦時按Enter鍵
  • 輸入文字模糊(焦點丟失)
  • 在按鈕上單擊

您所看到的可能是由於單擊按鈕時對輸入文本進行了blur處理而導致的。 我說您應該刪除blur處理程序,因為它與按鈕單擊沖突。

使用它,它應該可以正常工作

<input #newHero
          (keyup.enter)="test(newHero.value); newHero.value='' "
          (change)="test(newHero.value); newHero.value='' ">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM