Как использовать Pipe в реактивных формах Angular 14?

Мы используем Angular Reactive Forms и каналы для форматирования данных, которые отлично работали с Angular 9, но после обновления до 14. Можем ли мы больше использовать каналы в Angular Reactive Forms?

Ожидается, что если пользователь вводит значение, например 123,45678, нам нужно округлить и добавить суффикс с символом «%», например 123,457%

Когда пользователь снова пытается редактировать (в фокусе), нужно показать значение базы данных, например 123.45678. при размытии или табуляции нужно снова преобразовать, например, 123,457%

Этот сценарий отлично работал с Angular 9, но после обновления до 14.

Образец я сделала в stackblitz.

Единственная проблема в вашем примере - это [formControlName], применяемый к входу только для чтения, если вы удалите его, все будет работать так, как ожидалось. Вот исправленный пример stackblitz.com/edit/…

Ashot Aleqsanyan 19.02.2023 20:19

Привет, Ашот! Большое спасибо за вашу помощь. Все работает, как и ожидалось, вы действительно спасли мне жизнь. Я думаю, мы на связи :)

Cegone 20.02.2023 07:26

Привет GRD, Спасибо за вашу помощь. Если вы заметили, что значение formControl изменяется с форматированным значением, этого не должно происходить. Я очень ценю ваши усилия и помощь. Спасибо.

Cegone 20.02.2023 07:27

Здравствуйте @Cegone, нет проблем, да, дайте мне знать, если возникнут вопросы :)

Ashot Aleqsanyan 20.02.2023 13:23

@Cegone Привет, спасибо, что сообщили мне о решении. Здесь я даю вам решение с использованием директивы. Таким образом, нет никакой необходимости использовать трубу вообще. Ваш html остается простым. Вот демо и обсуждайте дальше, и все мои контактные данные находятся в этом демо stackblitz.com/edit/angular-aw9cit-gwv7rg?file=package.json

GRD 21.02.2023 08:31
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как показать таймер обратного отсчета в Angular с помощью ngx-countdown
Как показать таймер обратного отсчета в Angular с помощью ngx-countdown
В этом руководстве мы узнаем, как добавить таймер обратного отсчета в ваш проект Angular с помощью плагина ngx-countdown шаг за шагом.
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Микрофронтенды стали популярным архитектурным паттерном для веб-разработки. С появлением федерации модулей в Webpack 5 реализация микрофронтендов...
Конфигурация Jest в angular
Конфигурация Jest в angular
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
1
5
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать поддельный компонент только для чтения не связанным с formControl Итак, удалите параметр formControlName из второго ввода (только для чтения).

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

 [value] = "loanFormGroup.get('interest')?.value"

Потому что это не влияет на реактивное управление

Демо - https://stackblitz.com/edit/angular-aw9cit-fkxxdu?file=src/app/app.component.html

Привет, Никита! Большое спасибо за вашу помощь, ваши решения и решения Ашота работают, как и ожидалось. Очень ценю вашу помощь и усилия. Еще раз спасибо.

Cegone 20.02.2023 07:28

Другие вопросы по теме