fix(forms): support unbound disabled in ngModel (#11736)
This commit is contained in:
@ -485,7 +485,7 @@ export function main() {
|
||||
});
|
||||
|
||||
describe('NgModel', () => {
|
||||
var ngModel: any /** TODO #9100 */;
|
||||
let ngModel: NgModel;
|
||||
|
||||
beforeEach(() => {
|
||||
ngModel = new NgModel(
|
||||
@ -539,6 +539,45 @@ export function main() {
|
||||
|
||||
expect(ngModel.control.errors).toEqual({'async': true});
|
||||
}));
|
||||
|
||||
it('should mark as disabled properly', fakeAsync(() => {
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange('', undefined)});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(false);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange('', null)});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(false);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange('', false)});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(false);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange('', 'false')});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(false);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange('', 0)});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(false);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange(null, '')});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(true);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange(null, 'true')});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(true);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange(null, true)});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(true);
|
||||
|
||||
ngModel.ngOnChanges({isDisabled: new SimpleChange(null, 'anything else')});
|
||||
tick();
|
||||
expect(ngModel.control.disabled).toEqual(true);
|
||||
|
||||
}));
|
||||
});
|
||||
|
||||
describe('FormControlName', () => {
|
||||
|
@ -420,6 +420,31 @@ export function main() {
|
||||
});
|
||||
}));
|
||||
|
||||
it('should disable a control with unbound disabled attr', fakeAsync(() => {
|
||||
TestBed.overrideComponent(NgModelForm, {
|
||||
set: {
|
||||
template: `
|
||||
<form>
|
||||
<input name="name" [(ngModel)]="name" disabled>
|
||||
</form>
|
||||
`,
|
||||
}
|
||||
});
|
||||
const fixture = TestBed.createComponent(NgModelForm);
|
||||
fixture.detectChanges();
|
||||
tick();
|
||||
const form = fixture.debugElement.children[0].injector.get(NgForm);
|
||||
expect(form.control.get('name').disabled).toBe(true);
|
||||
|
||||
const input = fixture.debugElement.query(By.css('input'));
|
||||
expect(input.nativeElement.disabled).toEqual(true);
|
||||
|
||||
form.control.enable();
|
||||
fixture.detectChanges();
|
||||
tick();
|
||||
expect(input.nativeElement.disabled).toEqual(false);
|
||||
}));
|
||||
|
||||
});
|
||||
|
||||
describe('radio controls', () => {
|
||||
|
Reference in New Issue
Block a user