fix(select): set value individually from ngModel
Closes #7975 Closes #7978
This commit is contained in:
parent
f371c9066d
commit
e1e44a910e
|
@ -113,9 +113,8 @@ export class NgSelectOption implements OnDestroy {
|
|||
|
||||
@Input('value')
|
||||
set value(value: any) {
|
||||
if (this._select == null) return;
|
||||
this._setElementValue(value);
|
||||
this._select.writeValue(this._select.value);
|
||||
if (isPresent(this._select)) this._select.writeValue(this._select.value);
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
|
|
|
@ -378,6 +378,30 @@ export function main() {
|
|||
});
|
||||
}));
|
||||
|
||||
it("with basic selection and value bindings",
|
||||
inject([TestComponentBuilder, AsyncTestCompleter],
|
||||
(tcb: TestComponentBuilder, async) => {
|
||||
var t = `<select>
|
||||
<option *ngFor="#city of list" [value]="city['id']">
|
||||
{{ city['name'] }}
|
||||
</option>
|
||||
</select>`;
|
||||
|
||||
tcb.overrideTemplate(MyComp, t).createAsync(MyComp).then((fixture) => {
|
||||
var testComp = fixture.debugElement.componentInstance;
|
||||
testComp.list = [{"id": "0", "name": "SF"}, {"id": "1", "name": "NYC"}];
|
||||
fixture.detectChanges();
|
||||
|
||||
var sfOption = fixture.debugElement.query(By.css("option"));
|
||||
expect(sfOption.nativeElement.value).toEqual('0');
|
||||
|
||||
testComp.list[0]['id'] = '2';
|
||||
fixture.detectChanges();
|
||||
expect(sfOption.nativeElement.value).toEqual('2');
|
||||
async.done();
|
||||
});
|
||||
}));
|
||||
|
||||
it("with ngControl",
|
||||
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder,
|
||||
async) => {
|
||||
|
|
Loading…
Reference in New Issue