diff --git a/src/components/select/select-popover-component.ts b/src/components/select/select-popover-component.ts index b5cf4da92f0..be8a1803f76 100644 --- a/src/components/select/select-popover-component.ts +++ b/src/components/select/select-popover-component.ts @@ -8,6 +8,7 @@ export interface SelectPopoverOption { value: string; disabled: boolean; checked: boolean; + handler?: Function; } /** @hidden */ @@ -30,6 +31,10 @@ export class SelectPopover implements OnInit { } public set value(value: any) { + let checkedOption = this.options.find(option => option.value === value); + if (checkedOption && checkedOption.handler) { + checkedOption.handler(); + } this.viewController.dismiss(value); } diff --git a/src/components/select/select.ts b/src/components/select/select.ts index 2ae817ca9e3..a7648c0f7ae 100644 --- a/src/components/select/select.ts +++ b/src/components/select/select.ts @@ -301,7 +301,11 @@ export class Select extends BaseInput implements OnDestroy { text: input.text, checked: input.selected, disabled: input.disabled, - value: input.value + value: input.value, + handler: () => { + this.value = input.value; + input.ionSelect.emit(input.value); + } })); overlay = new Popover(this._app, SelectPopover, { @@ -368,12 +372,6 @@ export class Select extends BaseInput implements OnDestroy { overlay.onDidDismiss((value: any) => { this._fireBlur(); - - if (this.interface === 'popover' && value) { - this.value = value; - this.ionChange.emit(value); - } - this._overlay = undefined; });