Я пытаюсь ввести строку, содержащую событие (click)
в шаблон Angular2. Строка динамически извлекается из back-end намного после загрузки DOM. Нет ничего удивительного в том, что Angular не распознает введенное событие (click)
.Angular2 - catch/subscribe to (click) событие в динамическом добавлении HTML
Пример шаблона:
<div [innerHTML]="test"></div>
Пример строка, заданная с фоновым:
var test = "When ready, <span (click)=\"itemClick($event)\">click me</span>."
Пример вызова функции в угловых компонент:
itemClick(event) {
debugger;
}
Моя следующая догадка бы попытаться заставить Angular подписаться или поймать простой jav ascript события, поэтому строка затем будет:
var test = "When ready, <span onClick=\"itemClick($event)\">click me</span>."
Конечно, я получаю сообщение об ошибке itemClick is not defined
, так что я знаю, что ищет что яваскрипт функцию.
Итак, вопрос: Как я могу заставить Angular2 подписаться на это событие или функцию?
Работал красиво, спасибо. – Rhyeen
Я хотел бы добавить, что, поскольку приведенный выше код выполняется внутри компонента (о чем свидетельствует тот факт, что Günter использует ElementRef и/или Renderer), он выполняется внутри угловой зоны, поэтому после того, как обработчик события щелчка запускается, Обнаружение углового изменения всегда будет работать (по желанию). (Если бы вы вместо этого привязывали обработчик событий за пределами Angular, он не работал бы по своему желанию.) –
Нужно ли отменить регистрацию слушателя в 'ngOnDestroy()', если мы используем 'addEventListener()' или 'listen()'? –