2017-09-03 61 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