Angular 5:在动态附加的HTML块上获取click事件

时间:2018-05-17 14:35:01

标签: jquery html angular

这是我的代码:https://angular-gcmti7.stackblitz.io

在左侧,我有网格图案,有助于生成HTML布局。 必须在空面板上拖动这些图案。

我在触发元素上生成的菜单上的click事件时遇到问题。我必须将动态菜单附加到动态生成的HTML块。根据选择,它们的数量可以是N.

我尝试了这些,但没有工作: 1)菜单//选择器的子组件呈现是静态附加的。 2)直接HTML呈现// HTML块静态附加。

请建议一种让点击事件在这些菜单图标上运行的方法。

1 个答案:

答案 0 :(得分:1)

你的逻辑似乎与常规的Angular开发有点不同。花了将近一天的时间为您尝试解决方案,但我没有找到确切的解决方案,但希望我的以下发现可以帮助您。

  1. ComponentFactoryResolverresolveComponentFactory方法接受角度组件。

  2. 关于动态HTML注入的文章https://medium.com/@caroso1222/angular-pro-tip-how-to-dynamically-create-components-in-body-ba200cc289e6

  3. 在您的情况下,您将HTML注入模板,而不是组件。要注入HTML,请将其保存在变量中并使用DomSanitizer对其进行清理或绕过安全检查

  4. 这可能会对你有帮助。

    export class main_page{
    
    data: SafeHtml;
    
      constructor(private sanitizer: DomSanitizer) {}      
    
      ngOnInit(){ 
        this.getDynamicREST().then((res)=> {
            this.data = this.sanitizer.sanitize(res);
            /* OR */
            this.data = this.sanitizer.bypassSecurityTrustHtml(res);
        })
      };
    }
    

    然后,在您的模板中:

    <div class="top">
      <div [innerHtml]="data"></div>
    </div>