1

私は、サーバーからのHTML形式の応答を取得しているアプリケーションに取り組んでいます。 私はDomSanitizerのbypassSecurityTrustHtmlを使用しており、サニタイズされたhtmlをコンポーネント()に追加しています。角2:どのように私は偽のhtml/innerhtmlに指示を適用することができます

私の問題は、応答内の要素のいくつかは、リンクを示すためにタグは例えば要素からbuildtすることができます含まれていることである。

<div thisIsActuallyaLink linkParam1="foo" linkParam2="bar">clickHere</div> 

私はinnerHTMLプロパティに適用されるディレクティブを作成したいですしかし、htmlが表示されている間、私の指示でコンパイルされていません...

htmlの変換がなぜサーバーサイドで行われないのか不思議な人は、レスポンスはいくつかのアプリケーションで使用され、リンクには異なる相対URL用途に応じて:-(

+1

これは '[innerHTML] =" ... "では不可能です。実行時にコンポーネントをコンパイルして、動的HTMLのコンポーネントとディレクティブを取得することができます。https://stackoverflow.com/questions/38888008/how-can-i-use-create-dynamic-template-to-compile-dynamic-component-with-角度 –

+0

私のプロジェクトにAoTコンパイルが必要です。ダイナミックなコンポーネントは有望に見えますが、AoTではうまく動作しないと思いますか? 私はhtmlを解析し、 'ngAfterViewInit()'の間に(routerLinksの単一ページfunctionallityを失う)、プレーンリンクにタグを変換することに決めました。 – clearfix

+0

私は現在の状態を知らない。数ヶ月前にそれについての議論があり、それを一緒に働かせる方法があるように見えました。それ以来改善/悪化しているかどうかはわかりません。議論はAngular Github問題で行われました。 –

答えて

0

は、たぶんこのように、パイプを使用してみてください:

import { Pipe, PipeTransform } from '@angular/core'; 
import { DomSanitizer } from '@angular/platform-browser'; 

@Pipe({ name: 'safeHTML' }) 
export class SafeHtml implements PipeTransform { 

    constructor(private sanitizer: DomSanitizer) { } 

    transform(html: string) { 
     return this.sanitizer.bypassSecurityTrustHtml(html) 
    } 
} 

[innerHtml]="htmlExample | safeHTML"

+0

どのようにドームスナイパーが機能するか。これは私がすでにやっているのと似ていますが、コンパイル時に(ルータリンクのような)角度指令を使わないので、これは私の質問には当てはまりません。 – clearfix

関連する問題