[英]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
:
您所看到的可能是由於單擊按鈕時對輸入文本進行了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.