![](/img/trans.png)
[英]angular2 testing: Can't bind to 'ngModel' since it isn't a known property of 'input'
[英]angular2 testing - Input text change doesn't affect on ngmodel
我正在嘗試通過angular2測試設置DOM輸入元素:
這是HTML代碼:
<div>
<label for="Player X">Player X</label>
<input type="text" id="playerX" required [(ngModel)]="players[0].id" name="playerXid">
</div>
<div>
<label for="Player O">Player O</label>
<input type="text" id="playerO" required [(ngModel)]="players[1].id" name="playerOid">
</div>
這是測試代碼,因為players[0].id
和players[1].id
為空而失敗:
it('Test input <-> player bindings', () => {
fixture.detectChanges();
let playerX = fixture.debugElement.nativeElement.querySelector('#playerX');
playerX.value = 'First';
playerX.dispatchEvent(new Event('input'));
let playerO = fixture.debugElement.nativeElement.querySelector('#playerO');
playerO.value = 'Second';
playerO.dispatchEvent(new Event('input'));
fixture.detectChanges();
expect(comp.players[0].id).toBe('First');
expect(comp.players[1].id).toBe('Second');
});
我在這里錯過了什么?
UPDATE
我意識到輸入值會更新。 問題是comp.players
沒有!
嘗試這個:
let compiled = fixture.debugElement.nativeElement;
let playerX = compiled.querySelector('#playerX');
let player0 = compiled.querySelector('#playerX');
fixture.detectChanges();
// Change value
playerX.value = 'First';
player0.value = 'Second';
// dispatch input event
dispatchEvent(playerX, 'input');
dispatchEvent(player0, 'input');
讓我知道...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.