2017-09-03 4 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(); 
    } 

.body内のHTMLが同じ.TSファイル内のデータを参照しようとしていますonClick関数として使用します。このhtmlを対応するhtmlドキュメントで実行しているリファレンスは素晴らしいです(モーダルではありません)。また、モーダルで一般的なHTMLを追加すると、細かいテキスト(シンプルテキスト)が動作します。しかし、このコードを追加すると、検索バーはレンダリングされず、開発者コンソールには次のように表示されます。警告:HTMLでサニタイズするとコンテンツが取り除かれました(http://g.co/ng/security#xss参照)。誰が何が起こっているか考えている?申し訳ありませんが、私はパッケージを使用しているので、この質問が厳しいです。それらは検索バーのng2-completerであり、モーダルのngx-modialogです。私は問題が基本的であり、パッケージに関連しないかもしれないと思うので、私はstackoverflowを求めています。テンプレートが別々のhtmlファイルを指しているため、または.tsファイル内のオブジェクトを参照する必要があるため、このonClick関数がある.tsファイルをモーダル本体のHTMLが参照できないという問題がありますか?

答えて

1

問題は、あなたがそう角度がそれを信頼していないmodal.alert().body()機能

に文字列にHTMLを渡しているということです。これは潜在的にコードの注入源であり、したがって消毒される。あなたは別の方法を見つける必要があります - モーダルはテンプレートまたはコンポーネントをパラメータとして受け入れますかもしそうなら、それはそれを行う方法になります。

+0

私はそれがそういうものだと思った。私はng-templateを使用し、.body(myTemplate)として渡しました(myTemplateはhtmlからonClickのパラメータとして渡されました)が、[Object object]を表示しました。私はそれがコンポーネントを受け入れるかもしれないと信じている。しかし、私はこのコンポーネントのデータを参照する必要があり、私はこのコンポーネントの検索バーを持っていることをお勧めします...多分私は間違ってテンプレートを渡しています。私に教えてください。 – Zachscs

+0

あなたが使用しているモーダルがわかりません。私はあなたの質問に答えてくれたと信じています。研究の次のビットはあなたのことです – Mikkel

関連する問題