Angular 2+ динамически добавляет HTML-текст в div с помощью функции onChange

Я разработал приложение, которое динамически изменяет текст HTML в элементе div, как только изменяется значение в элементе select.

В HTML:

<div id = "update"></div>

В машинописном тексте:

$('#update').html(`<input type = "file" (change) = "onFileChanged($event)">`

Оно работает. Когда я выбираю файл, функция не вызывается.

Лучшая практика - избегать использования jquery в приложениях angular.

Kesavan R 18.12.2018 08:58

jQuery не может компилировать угловой код. Вы пытаетесь визуализировать во время выполнения скрипт angular, который необходимо скомпилировать. Для этого либо вообще избегайте использования jQuery, либо используйте создание динамического компонента angular netbasal.com/…. Скорее всего, вы в любом случае подходите к этому неверно, поскольку это простая задача, которую можно решить с помощью angular вообще без jQuery.

briosheje 18.12.2018 08:59

Почему вы добавляете его динамически? Не подразумевая, что ты не должен, просто хочу понять, чтобы увидеть, могу ли я помочь.

Eric Green 18.12.2018 09:08

Необходимо динамически интегрировать html-текст, потому что он не работает с ngModule специально * ngIf. Если я установлю флаг в поле div (например, * ngIf = "x === 1), он будет проверяться только во время компиляции, и если значение поля выбора будет изменено, текст html не изменится .

Ha Bardan 18.12.2018 12:22
Поведение ключевого слова "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) для оценки ваших знаний,...
0
4
461
2

Ответы 2

Попробуй это;

var html = $compile('<input type = "file" (change) = "onFileChanged($event)"')($scope);
 $('#update').html(html);

Эта процедура больше не работает в Angular 2. $compile был упразднен с введением NgModule.

Ha Bardan 18.12.2018 09:49

Удалите код jquery и установите флаг для div. Когда пользователь нажимает кнопку, флаг должен быть изменен. в зависимости от статуса флага вы можете установить свой текст.

Если я установлю флаг в поле div (например, * ngIf = "x === 1), он будет проверяться только во время компиляции, и если значение поля выбора будет изменено, текст html не изменится .

Ha Bardan 18.12.2018 12:23

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