Как правильно отформатировать номер входного текста с группировкой в приложении Angular 5?

#javascript #angular #forms

#javascript #angular #формы

Вопрос:

У меня есть следующее определение объекта:

 export class Company {
  id : number;
  my_number: number;
  

У меня есть следующий ввод из шаблона:

 <input type="text" #myNumber="ngModel" name="my_number" [(ngModel)]="company.my_number" [groupingFormat]="company.my_number" id="aum_usd">
  

Директива groupingFormat работает нормально, и его задача — применить группировку
когда число становится длиннее. Пример: 1000 -> 1000

Проблема в том, что 1000 — это строка, и когда я нажимаю сохранить, база данных показывает null.

Действительно ли мне нужно удалять «,» перед сохранением (тяжелая работа) или я чего-то не хватает?

Комментарии:

1. вам нужно будет убрать запятые, если ваш серверный код не понимает форматированную строку.. Вы можете сделать это до или после отправки его на сервер. В качестве дополнительного примечания, независимо от того, насколько сильно вы хотите, чтобы значение этого элемента ввода было числом, это не так … это строка. Звучит так, как будто, добавив запятые, вы усложнили для вашей серверной части анализ полученной строки (предположительно, через AJAX). Но ваш сервер анализирует строки, HTTP понимает только текстовый (символьный) тип данных лишь за несколькими исключениями — числа не входят в их число.

2. company.my_number — это тип number, поэтому я попытаюсь добавить новое строковое свойство к компоненту и использовать его вместо company.my_number и разобрать на number перед сохранением.

3. Пожалуйста, имейте в виду, что «тип number» и «тип string» — это фасады TypeScript, которые обеспечивают только статический анализ. Они не имеют никакого значения во время выполнения, особенно при отправке данных на сервер через AJAX. JavaScript вместе с DOM API являются базовой технологией, которая контролирует то, что происходит во время выполнения.

4. Да, но мне придется сохранить объект с типом number, потому что серверная часть имеет длину java.

5. Вы явно не читали мой комментарий. Браузер отправляет ТЕКСТ через HTTP на сервер — все передается в виде строки. Java (Spring или что-то еще) преобразует строку, которую он получает от HTTP-сервера, независимо от того, что вы объявляете в своем коде TypeScript. Кроме того, что вы хорошо разбираетесь в том, как все это работает, ничто из этого не имеет отношения к вашему вопросу.