diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/text/text-mask.component.ts b/ng2-components/ng2-activiti-form/src/components/widgets/text/text-mask.component.ts index faf6128b3a..80d3683f65 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/text/text-mask.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/text/text-mask.component.ts @@ -70,6 +70,8 @@ export class InputMaskDirective implements OnChanges, ControlValueAccessor { if (this.inputMask && this.inputMask.mask) { this.maskValue(this.el.nativeElement.value, this.el.nativeElement.selectionStart, this.inputMask.mask, this.inputMask.isReversed, event.keyCode); + } else { + this._onChange(this.el.nativeElement.value); } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.spec.ts index 209f3bffca..b7e26cdc44 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.spec.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/text/text.widget.spec.ts @@ -65,6 +65,36 @@ describe('TextWidget', () => { TestBed.resetTestingModule(); }); + describe('and no mask is configured on text element', () => { + + let inputElement: HTMLInputElement; + + beforeEach(() => { + textWidget.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), { + id: 'text-id', + name: 'text-name', + value: '', + type: FormFieldTypes.TEXT, + readOnly: false + }); + + fixture.detectChanges(); + inputElement = element.querySelector('#text-id'); + }); + + it('should raise ngModelChange event', async(() => { + inputElement.value = 'TEXT'; + expect(textWidget.field.value).toBe(''); + inputElement.dispatchEvent(new Event('input')); + fixture.whenStable().then(() => { + fixture.detectChanges(); + expect(textWidget.field).not.toBeNull(); + expect(textWidget.field.value).not.toBeNull(); + expect(textWidget.field.value).toBe('TEXT'); + }); + })); + }); + describe('and mask is configured on text element', () => { let inputElement: HTMLInputElement;