Шаблон Angular 7 Component для включения Javascript - PullRequest
0 голосов
/ 24 января 2019

У меня есть следующий код:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-dinner',
  template: '<h2>Test</h2> <script>alert("Test");</script>',
  //templateUrl: './dinner.component.html',
  styleUrls: ['./dinner.component.css']
})
export class DinnerComponent implements OnInit {

   status = true;

  constructor() { }

  ngOnInit() {
    this.status = true;
  }

}

Когда страница загружена, теги javascript удаляются, что приводит только к:

<h2 _ngcontent-c2="">Test</h2>

в исходном коде.

Я предполагаю, что это из-за соображений безопасности / архитектуры (Правка: Да, это: https://angular.io/guide/security). Однако, для моей цели, есть ли способ настроить Angular 7 на , а не удалите теги Javascript?


Выше приведен обзор проблемы, с которой я сталкиваюсь, пытаясь сделать это: https://stackoverflow.com/a/42562462/4762482

Я понял сегмент здесь:

const compMetadata = new Component({
            selector: 'dynamic-html',
            template: this.html,
          });

В результате создается новый Компонент со всеми тегами ng и script, которые были удалены.


[Final Edit] - я решил, что этот вопрос больше не актуален, так как считаю (хакерский)) решение, скорее всего, нарушит несколько рекомендаций OWASP и нарушит принципы архитектуры Angular 7.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вы правы в своем "Окончательном редактировании", но вы можете загрузить любые теги javascript, которые вы хотите, в index.html (или любой другой корневой html);вы просто не можете сделать это в отдельных компонентах (и на самом деле вам это не нужно).

0 голосов
/ 24 января 2019

Вы можете включить любые js, которые вы хотите вызвать при загрузке компонента, внутри ngOnInit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...