Я разработал приложение, которое динамически изменяет текст HTML в элементе div, как только изменяется значение в элементе select.
В HTML:
<div id = "update"></div>
В машинописном тексте:
$('#update').html(`<input type = "file" (change) = "onFileChanged($event)">`
Оно работает. Когда я выбираю файл, функция не вызывается.
jQuery не может компилировать угловой код. Вы пытаетесь визуализировать во время выполнения скрипт angular, который необходимо скомпилировать. Для этого либо вообще избегайте использования jQuery, либо используйте создание динамического компонента angular netbasal.com/…. Скорее всего, вы в любом случае подходите к этому неверно, поскольку это простая задача, которую можно решить с помощью angular вообще без jQuery.
Почему вы добавляете его динамически? Не подразумевая, что ты не должен, просто хочу понять, чтобы увидеть, могу ли я помочь.
Необходимо динамически интегрировать html-текст, потому что он не работает с ngModule специально * ngIf. Если я установлю флаг в поле div (например, * ngIf = "x === 1), он будет проверяться только во время компиляции, и если значение поля выбора будет изменено, текст html не изменится .
Попробуй это;
var html = $compile('<input type = "file" (change) = "onFileChanged($event)"')($scope);
$('#update').html(html);
Эта процедура больше не работает в Angular 2. $compile
был упразднен с введением NgModule.
Удалите код jquery и установите флаг для div. Когда пользователь нажимает кнопку, флаг должен быть изменен. в зависимости от статуса флага вы можете установить свой текст.
Если я установлю флаг в поле div (например, * ngIf = "x === 1), он будет проверяться только во время компиляции, и если значение поля выбора будет изменено, текст html не изменится .
Лучшая практика - избегать использования jquery в приложениях angular.