2017-09-03 64 views
0

嘿,我试图通过在车身模写HTML像这样显示在模式搜索栏:角警告:消毒HTML剥离了一些内容?

onClick() { 
     const dialogRef = this.modal.alert() 
     .size('lg') 
     .showClose(true) 
     .title('A simple Alert style modal window') 
     .body(` 
      <div class="card container-fluid col-xs-10"> 
      <div class="card-block"> 
       <div class="form-group row"> 
        <div class="col-5"> 
         <ng2-completer class="completer-limit" 
            [(ngModel)]="searchStr" 
            [datasource]="dataService" 
            [minSearchLength]="0" 
            [inputClass]="'form-control'" 
            [placeholder]="'Enter the class you would like to add'" 
            [matchClass]="'match'" 
            [autofocus]="true" 
            [textSearching]="false"> 
         </ng2-completer> 
        </div> 
       </div> 
      </div> 
     </div>`) 
     .open(); 
    } 

的。体中的HTML试图在相同的.ts文件来引用数据作为onClick函数。为了参考,在相应的html文档中运行这个html效果很好(不是模态)。在模式中添加通用html也可以正常工作(简单文本)。但是,当我添加此代码时,搜索栏未呈现,并且在开发人员控制台中显示:警告:清理HTML会剥去一些内容(请参阅http://g.co/ng/security#xss)。任何人都知道发生了什么事?对不起,如果这个问题很困难,因为我正在使用包。它们是搜索栏的ng2-completer和模式的ngx-modialog。我认为这个问题可能是基础性的,而不是与包相关,这就是为什么我要求在stackoverflow。由于模板指向一个单独的html文件,或者我仍然应该能够引用.ts文件中的对象,所以模式正文中的html无法引用.ts文件,因此onClick函数中存在问题?

回答

1

的问题是,你是通过HTML在一个字符串modal.alert().body()功能

所以角度不信任它。它可能是代码注入的来源,因此被消毒。你需要找到另一种方式 - 你的模态是否接受一个模板或组件作为参数,如果是的话,这将是实现它的方式。

+0

我以为是这样的。我尝试使用ng-template并将其作为.body(myTemplate)(myTemplate作为参数传递给html中的onClick)传递,但它仅显示[Object object]。我相信它可以接受一个组件。我需要引用这个组件中的数据,但是我希望在这个组件中有搜索栏......也许我错误地传递了模板。请让我知道。 – Zachscs

+0

我不知道你正在使用哪种模式,我相信我回答了你的问题,下一步的研究是你的工作。 – Mikkel