From 84f859d7b220317f63a600632dd2d21f46af7ada Mon Sep 17 00:00:00 2001 From: Nicholas Hydock Date: Thu, 26 May 2016 15:01:49 -0400 Subject: [PATCH] fix(Control): Support + * + * + * ``` + */ +@Directive({selector: 'option'}) +export class NgSelectMultipleOption implements OnDestroy { + id: string; + /** @internal */ + _value: any; + + constructor(private _element: ElementRef, private _renderer: Renderer, + @Optional() @Host() private _select: SelectMultipleControlValueAccessor) { + if (isPresent(this._select)) { + this.id = this._select._registerOption(this); + } + } + + @Input('ngValue') + set ngValue(value: any) { + if (this._select == null) return; + this._value = value; + this._setElementValue(_buildValueString(this.id, value)); + this._select.writeValue(this._select.value); + } + + @Input('value') + set value(value: any) { + if (isPresent(this._select)) { + this._value = value; + this._setElementValue(_buildValueString(this.id, value)); + this._select.writeValue(this._select.value); + } else { + this._setElementValue(value); + } + } + + /** @internal */ + _setElementValue(value: string): void { + this._renderer.setElementProperty(this._element.nativeElement, 'value', value); + } + + /** @internal */ + _setSelected(selected: boolean) { + this._renderer.setElementProperty(this._element.nativeElement, 'selected', selected); + } + + ngOnDestroy() { + if (isPresent(this._select)) { + this._select._optionMap.delete(this.id); + this._select.writeValue(this._select.value); + } + } +} + +export const SELECT_DIRECTIVES = [SelectMultipleControlValueAccessor, NgSelectMultipleOption]; \ No newline at end of file