fix(ivy): compiler should generate restoreView() for local refs in listeners (#27034)
PR Close #27034
This commit is contained in:

committed by
Andrew Kushnir

parent
97ef8ae9e7
commit
1810cdf2c3
@ -1489,36 +1489,35 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat
|
||||
expect(required.nativeElement.getAttribute('pattern')).toEqual(null);
|
||||
}));
|
||||
|
||||
fixmeIvy('ngModelChange callback never called') &&
|
||||
it('should update control status', fakeAsync(() => {
|
||||
const fixture = initTest(NgModelChangeState);
|
||||
const inputEl = fixture.debugElement.query(By.css('input'));
|
||||
const inputNativeEl = inputEl.nativeElement;
|
||||
const onNgModelChange = jasmine.createSpy('onNgModelChange');
|
||||
fixture.componentInstance.onNgModelChange = onNgModelChange;
|
||||
fixture.detectChanges();
|
||||
tick();
|
||||
it('should update control status', fakeAsync(() => {
|
||||
const fixture = initTest(NgModelChangeState);
|
||||
const inputEl = fixture.debugElement.query(By.css('input'));
|
||||
const inputNativeEl = inputEl.nativeElement;
|
||||
const onNgModelChange = jasmine.createSpy('onNgModelChange');
|
||||
fixture.componentInstance.onNgModelChange = onNgModelChange;
|
||||
fixture.detectChanges();
|
||||
tick();
|
||||
|
||||
expect(onNgModelChange).not.toHaveBeenCalled();
|
||||
expect(onNgModelChange).not.toHaveBeenCalled();
|
||||
|
||||
inputNativeEl.value = 'updated';
|
||||
onNgModelChange.and.callFake((ngModel: NgModel) => {
|
||||
expect(ngModel.invalid).toBe(true);
|
||||
expect(ngModel.value).toBe('updated');
|
||||
});
|
||||
dispatchEvent(inputNativeEl, 'input');
|
||||
expect(onNgModelChange).toHaveBeenCalled();
|
||||
tick();
|
||||
inputNativeEl.value = 'updated';
|
||||
onNgModelChange.and.callFake((ngModel: NgModel) => {
|
||||
expect(ngModel.invalid).toBe(true);
|
||||
expect(ngModel.value).toBe('updated');
|
||||
});
|
||||
dispatchEvent(inputNativeEl, 'input');
|
||||
expect(onNgModelChange).toHaveBeenCalled();
|
||||
tick();
|
||||
|
||||
inputNativeEl.value = '333';
|
||||
onNgModelChange.and.callFake((ngModel: NgModel) => {
|
||||
expect(ngModel.invalid).toBe(false);
|
||||
expect(ngModel.value).toBe('333');
|
||||
});
|
||||
dispatchEvent(inputNativeEl, 'input');
|
||||
expect(onNgModelChange).toHaveBeenCalledTimes(2);
|
||||
tick();
|
||||
}));
|
||||
inputNativeEl.value = '333';
|
||||
onNgModelChange.and.callFake((ngModel: NgModel) => {
|
||||
expect(ngModel.invalid).toBe(false);
|
||||
expect(ngModel.value).toBe('333');
|
||||
});
|
||||
dispatchEvent(inputNativeEl, 'input');
|
||||
expect(onNgModelChange).toHaveBeenCalledTimes(2);
|
||||
tick();
|
||||
}));
|
||||
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user