Skip to content

Commit

Permalink
fix(module:input-number): fix display value after formatter changed
Browse files Browse the repository at this point in the history
  • Loading branch information
csyszf committed Apr 28, 2018
1 parent e881ebd commit 2fb9347
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
12 changes: 11 additions & 1 deletion components/input-number/nz-input-number.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ export class NzInputNumberComponent implements ControlValueAccessor, AfterViewIn
private _step = 1;
private autoStepTimer;
private _autoFocus = false;
private _formatter = (value) => value;
displayValue: string | number;
actualValue: string | number;
isFocused = false;
Expand All @@ -82,7 +83,6 @@ export class NzInputNumberComponent implements ControlValueAccessor, AfterViewIn
@Input() nzSize: 'small' | 'default' | 'large' = 'default';
@Input() nzMin: number = -Infinity;
@Input() nzMax: number = Infinity;
@Input() nzFormatter = (value) => value;
@Input() nzParser = (value) => value;
@Input() nzPrecision: number;

Expand Down Expand Up @@ -125,6 +125,16 @@ export class NzInputNumberComponent implements ControlValueAccessor, AfterViewIn
return this._step;
}

@Input()
set nzFormatter(v: (value: number) => string | number) {
this._formatter = v;
this.writeValue(Number(this.actualValue));
}

get nzFormatter(): (value: number) => string | number {
return this._formatter;
}

updateAutoFocus(): void {
if (this.isInit) {
if (this.nzAutoFocus) {
Expand Down
10 changes: 10 additions & 0 deletions components/input-number/nz-input-number.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,16 @@ describe('input number', () => {
fixture.detectChanges();
expect(testComponent.value).toBe(-10);
});
it('should update value immediatelly after formatter changed', (() => {
const value = '100';
const newFormatter = v => `${v} %`;
fixture.detectChanges();
testComponent.nzInputNumberComponent.onModelChange(value);
fixture.detectChanges();
testComponent.formatter = newFormatter;
fixture.detectChanges();
expect(inputElement.value).toBe(newFormatter(value));
}));
});
describe('input number form', () => {
let fixture;
Expand Down

0 comments on commit 2fb9347

Please sign in to comment.