Angular 5: добавить пробел после каждых 4 цифр на входе - PullRequest
0 голосов
/ 31 мая 2018

Мне нужно добавить пробел после каждых 4 цифр, которые я ввожу, я получаю это в консоли, как я могу добиться этого, чтобы изменить ввод в угловых 5

Код, который я использовал, приведенный ниже.ts

  mychange(val) {
    const self = this;
    let chIbn = val.split(' ').join('');
    if (chIbn.length > 0) {
      chIbn = chIbn.match(new RegExp('.{1,4}', 'g')).join(' ');
    }
    console.log(chIbn);
    this.id = chIbn;
  }

html

<input class="customerno" (ngModelChange)="mychange($event)" [formControl]="inputFormControl" (keydown.backspace)="onKeydown($event)" maxlength="{{digit}}" (keyup)="RestrictNumber($event)" type="tel" matInput [(ngModel)]="id" placeholder="Customer No. ">

Консоль

1
11
111
1111
1111 1
1111 11
1111 111
1111 1111
1111 1111 1
1111 1111 11
1111 1111 111
1111 1111 1111

enter image description here

примечание: я адаптирую егос Угловой 2: добавить дефис после каждых 4 цифр на входе, ввод номера карты .но я изменил Hypen с пробелом

1 Ответ

0 голосов
/ 31 мая 2018

Я бы рекомендовал ознакомиться с этой директивой

import { Directive, HostListener, ElementRef } from '@angular/core';

@Directive({
  selector: '[credit-card]'
})
export class CreditCardDirective {

@HostListener('input', ['$event'])
  onKeyDown(event: KeyboardEvent) {
    const input = event.target as HTMLInputElement;

    let trimmed = input.value.replace(/\s+/g, '');
    if (trimmed.length > 16) {
      trimmed = trimmed.substr(0, 16);
    }

    let numbers = [];
    for (let i = 0; i < trimmed.length; i += 4) {
      numbers.push(trimmed.substr(i, 4));
    }

    input.value = numbers.join(' ');

  }
}

и использовать в своем шаблоне html как

<input type="text" credit-card>

Вот исходный код

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