Как проверить изменения с пайпами? Угловая текстовая область

У меня есть текстовая область с отформатированным json. пользователю разрешено вносить изменения в эту текстовую область. Однако из-за канала json я не могу использовать [(ngmodel)}. Кроме того, (change) и (ngModelChange), похоже, ничего не вызывают. Как зафиксировать изменения пользователя?

data: string = '{"a":1,"b":2,"c":{"d":3, "e":4}}';

ngOninit(){
this.data= JSON.parse(this.data);
}

 saveUserChanges(){
 console.info(this.data)
}

HTML

<text area (ngModelChange) = "saveUserChanges()">{{data | json}}</textarea>
<button (click) = "saveUserChanges()">save</button>

Это (ngModelChange) (обработчик событий), а не [(ngModelChange)] (привязка). А поскольку [(ngModel)] текстовой области не привязан к значению, событие ngModelChange не будет сгенерировано при изменении содержимого.

The Head Rush 10.04.2019 20:10

Как использовать [(ngModel)] с трубкой: | json

Flash 10.04.2019 20:14

Зачем тебе JsonPipe? Оказывается, data — это String.

The Head Rush 10.04.2019 20:23

Это нужно для того, чтобы красиво отформатировать его после того, как я его проанализирую.

Flash 10.04.2019 20:23

Вы можете внедрить свой канал в класс компонента и вызвать для него .transform, чтобы отформатировать json внутри класса компонента.

Vinaayakh 10.04.2019 20:23

как так @vinaayakh?

Flash 10.04.2019 20:24

Возможный дубликат Использование каналов в ngModel для элементов INPUT в Angular

Ryan E. 10.04.2019 20:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
374
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете связать значение с помощью [ngModel] и установить новое значение с помощью (ngModelChange):

<textarea [ngModel] = "data | json" (ngModelChange) = "saveUserChanges($event)"></textarea>

В классе компонентов saveUserChanges определяется как:

saveUserChanges(value) {
  this.data = JSON.parse(value);
}

См. этот стекблиц для демонстрации.

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

Похожие вопросы

Как использовать регулярное выражение для сопоставления определенных слов в маршруте в nuxtjs, vue?
Мой флипчас работает слишком быстро и перескакивает через четные числа. Как я могу это исправить?
Как определить несколько параметров инициализации для DataTable?
Почему библиотека входа в консоль не работает, если она была импортирована в другой компонент реакции?
Как сделать динамическую продолжительность анимации в соответствии со значением javascript
Firestore <запрос, смешанный с orderBy Query
Калькулятор ИМТ, написанный в классе react.js, необходимо дважды щелкнуть по кнопке отправки, чтобы изменить некоторые значения this.state
Я не понимаю, почему после перехода по ссылке вместо переданного аргумента отображается "undefined"
Мои поля ввода не захватываются при размещении на панели инструментов
Почему иногда ошибка в асинхронном коде приводит к сбою сервера node.js