Как вернуться на числовую (только числовую) ячейку в ag-grid? - PullRequest
0 голосов
/ 25 июня 2019

Используя пример, который AG-Grid щедро предоставил [https://next.plnkr.co/edit/Gbwc2rBQKJRFbLxS?preview] В настоящее время я пытаюсь использовать числовой редактор.

Этот пример взят с официального сайта ag-grid [https://www.ag -grid.com / javascript-grid-cell-editor / # example-cell-edit-using-angular-components]

Одна вещь, которую я заметил, даже на примере, представленном AG-Grid, backspace не работает.

Я довольно новичок в AG-Grid и буду признателен за любую помощь!

Это используемый мной числовой редактор.ts:

import {AfterViewInit, Component, ViewChild, ViewContainerRef} from 
"@angular/core";

import {ICellEditorAngularComp} from "ag-grid-angular";

@Component({
    selector: 'numeric-cell',
    template: `<input #input (keydown)="onKeyDown($event)" 
[(ngModel)]="value" style="width: 100%">`
})
export class NumericEditor implements ICellEditorAngularComp, 
AfterViewInit {
    private params: any;
    public value: number;
    private cancelBeforeStart: boolean = false;

    @ViewChild('input', {read: ViewContainerRef}) public input;


agInit(params: any): void {
    this.params = params;
    this.value = this.params.value;

    // only start edit if key pressed is a number, not a letter
    this.cancelBeforeStart = params.charPress && 
('1234567890'.indexOf(params.charPress) < 0);
}

getValue(): any {
    return this.value;
}

isCancelBeforeStart(): boolean {
    return this.cancelBeforeStart;
}

// will reject the number if it greater than 1,000,000
// not very practical, but demonstrates the method.
isCancelAfterEnd(): boolean {
    return this.value > 1000000;
};

onKeyDown(event): void {
    if (!this.isKeyPressedNumeric(event)) {
        if (event.preventDefault) event.preventDefault();
    }
}

// dont use afterGuiAttached for post gui events - hook into 
ngAfterViewInit instead for this
ngAfterViewInit() {
    window.setTimeout(() => {
        this.input.element.nativeElement.focus();
    })
}

private getCharCodeFromEvent(event): any {
    event = event || window.event;
    return (typeof event.which == "undefined") ? event.keyCode : 
event.which;
}

private isCharNumeric(charStr): boolean {
    return !!/\d/.test(charStr);
}

private isKeyPressedNumeric(event): boolean {
    const charCode = this.getCharCodeFromEvent(event);
    const charStr = event.key ? event.key : 
String.fromCharCode(charCode);
    return this.isCharNumeric(charStr);
}
}

1 Ответ

0 голосов
/ 25 июня 2019
private isCharNumeric(charStr): boolean {
    return !!/\d/.test(charStr) || charStr === 'Backspace';
}

Добавление backspace к ischarnumeric функции добилось цели!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...