Uncaught ReferenceError: <function>не определено - тег InnerHTML <script>с угловым - PullRequest
0 голосов
/ 24 октября 2018

У меня есть компонент в Angular, содержимое которого предоставляется бэкэндом, предоставляющим HTML-код.Я добавляю его в компонент как внутренний HTML.В предоставленном HTML есть тег и.Однако, хотя я думаю, что стили соблюдаются, я не могу вызвать функцию в теге script.

Тег <script>:

  function ToggleDisplayMode(node) 
    {
        var tableHeader = document.getElementById(node);
        if (null != tableHeader)
        {
            var row = tableHeader.nextSibling;
            while (row != null)
            {
                if ( row.style.display != "none" ) {
                    row.style.display = "none";
                }
                else {
                    row.style.display = "";
                }
                row = row.nextSibling;
            }
        }
    }

Как я вызываю эту функцию:

<a onclick="ToggleDisplayMode(<args>)"><u>show/hide</u></a>

Щелчок не работает, и я получаю следующий вывод в консоли:

> Uncaught ReferenceError: ToggleDisplayMode is not defined
>     at HTMLAnchorElement.onclick (<args>)

Функция четко определена, поэтому я не понимаю, что я делаю здесь неправильно.

Я проверил несколько сообщений по этой проблеме, но они основаны на JQuery.Это проблема с тем, как Angular может обрабатывать внутренний HTML?

EDIT: Клик должен обрабатываться JavaScript, а не Angular (из-за особенностей этой системы), поэтому ngClick или (click) не будет работать.

РЕДАКТИРОВАТЬ 2: Очевидно, <script> теги в innerHtml не выполняются согласно этой записи .Тогда придется найти другой способ сделать это.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вам нужно изменить свой код следующим образом:

<a (click)="ToggleDisplayMode()"><u>show/hide</u></a>

Обратите внимание, что вместо onclick, вы должны использовать (click)

0 голосов
/ 24 октября 2018

Angular ищет код в машинописном файле компонента, поэтому я думаю, что вам нужно поместить код туда.Вы можете создать службу для получения кода из бэкэнда, затем вызвать службу из файла машинописного текста и использовать событие (click) для вызова кода машинописного текста.

...