Skip to content

Commit c443e36

Browse files
sdirixedgarmueller
authored andcommitted
Fix Angular number render issues
* Check zero and separator in Angular Material number renderer * Don't overwrite values when focus is lost
1 parent 00cf07b commit c443e36

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

packages/angular-material/src/controls/number.renderer.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,18 @@ export class NumberControlRenderer extends JsonFormsControl {
8484
this.getValue() !== '' &&
8585
// a 0 in the first place
8686
((ev.target.selectionStart === 1 && ev.target.selectionEnd === 1) ||
87-
// or in the last place as this doesn't change the value
87+
// or in the last place as this doesn't change the value (when there is a separator)
8888
(ev.target.selectionStart === ev.target.value.length &&
89-
ev.target.selectionEnd === ev.target.value.length)))
89+
ev.target.selectionEnd === ev.target.value.length &&
90+
ev.target.value.indexOf(this.decimalSeparator) !== -1)))
9091
) {
9192
this.oldValue = ev.target.value;
9293
return;
9394
}
9495
super.onChange(ev);
9596
this.oldValue = this.getValue();
9697
}
98+
9799
getEventValue = (event: any) => {
98100
const cleanPattern = new RegExp(`[^-+0-9${this.decimalSeparator}]`, 'g');
99101
const cleaned = event.target.value.replace(cleanPattern, '');
@@ -137,6 +139,7 @@ export class NumberControlRenderer extends JsonFormsControl {
137139
this.determineDecimalSeparator();
138140
this.oldValue = this.getValue();
139141
}
142+
this.form.setValue(this.getValue());
140143
}
141144
}
142145

0 commit comments

Comments
 (0)