diff --git a/src/lib/slide-toggle/slide-toggle.spec.ts b/src/lib/slide-toggle/slide-toggle.spec.ts index 14794ab96555..bc93f9e8258c 100644 --- a/src/lib/slide-toggle/slide-toggle.spec.ts +++ b/src/lib/slide-toggle/slide-toggle.spec.ts @@ -100,6 +100,19 @@ describe('MdSlideToggle without forms', () => { expect(slideToggle.checked).toBe(true); }); + fit('should update the checked value before firing an event', () => { + let changed: number = 0; + let checked: number = 0; + + spyOn(slideToggle.change, 'emit').and.callFake(() => changed = performance.now()); + spyOnProperty(slideToggle, 'checked', 'set').and.callFake(() => checked = performance.now()); + + labelElement.click(); + fixture.detectChanges(); + + expect(checked).toBeLessThan(changed); + }); + it('should not trigger the click event multiple times', () => { // By default, when clicking on a label element, a generated click will be dispatched // on the associated input element. diff --git a/src/lib/slide-toggle/slide-toggle.ts b/src/lib/slide-toggle/slide-toggle.ts index 114bf16e3184..a4c2498d8688 100644 --- a/src/lib/slide-toggle/slide-toggle.ts +++ b/src/lib/slide-toggle/slide-toggle.ts @@ -253,8 +253,8 @@ export class MdSlideToggle extends _MdSlideToggleMixinBase implements OnDestroy, let event = new MdSlideToggleChange(); event.source = this; event.checked = this.checked; - this.change.emit(event); this.onChange(this.checked); + this.change.emit(event); } _onDragStart() {