Angular 2和Google Custom Search. Angular2剥离html标记

前端之家收集整理的这篇文章主要介绍了Angular 2和Google Custom Search. Angular2剥离html标记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将Google自定义搜索添加到我的角度2应用程序中.
当我将它放入 jsfiddle时,使用自定义搜索中的代码可以正常工作,但是当插入到我的组件中时,我遇到了让它工作的问题.

问题似乎是,当插入脚本的代码运行时,html标记< gcse:search>被剥夺了它的gcse:成为< search>的一部分我想那个运行的脚本找不到任何可以处理的元素.

My.component.html基本上是:

<gcse:search></gcse:search>

在My.component.html.ts中我有一个实现ngOnInit的函数

ngOnInit(){
    var cx = '016820916711928902111:qw0kgpuhihm';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse,s);
}

解决方法

这不是一个很好的解决方案,但我通过传递< gcse:search>来实现它.使用DomSanitizationService的bypassSecurityTrustHtml标记到容器div的InnerHTML,而不是将其存在.

my.component.html现在看起来像:

<div class="google-media-search" [innerHTML]="gcsesearch"></div>

和my.component.ts包含以下内容

import {DomSanitizationService,SafeHtml} from '@angular/platform-browser';

...

constructor(
    private sanitizer: DomSanitizationService,...
){}

gcsesearch: SafeHtml;

ngOnInit() {
    this.gcsesearch = this.sanitizer.bypassSecurityTrustHtml("<gcse:search></gcse:search>");

    var cx = '016820916711928902111:qw0kgpuhihm';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse,s);
}

猜你在找的Angularjs相关文章