2017-03-10 4 views
1

私はこの文字列をデータベースに持っているといいます。コンパイル角2文字列からの文字列

databaseEntry = "<span (click)="togleShowDetails()">click here</span>" 

同じ文字列を自分のコードに直接挿入した場合と同じように動作します。 は、私はこれを試してみました:

<p [innerHTML]="databaseEntry"></p> 
<span (click)="someFunction()">click here</span> 

両方のラインを視覚的に同じレンダリングが、実際に生成されたHTMLが異なるため、機能が第二にのみ動作します。

<span>click here</span> 
<span _ngcontent-qdv-71="" data-vivaldi-spatnav-clickable="1">click here</span> 

これは、角で再生されないためです。

したがって、問題はinnerHTMLの代わりに何を使用するかです。 これに対していくつかの回答が見つかりましたが、ランダムな入力文字列を検討していなかったか、重要なものが欠けていました。

答えて

0

私はMiladに賛成するという指示が良いアプローチになることに同意しますが、私は解決策を見つけられませんでした。

しかし、我々は、回避策が見つかりました:

innerText = <string>this.sanitizer.bypassSecurityTrustHtml(this.parseMessage(databaseEntry)); 

をしかし、あなたは独自のリスナーを追加する必要がより:

setTimeout(() => { 
    try { 
     document.getElementById(IDinDatabaseentryhtmlstring).addEventListener("click",() => this.myClick(LINKinDatabaseEntryHtmlString)); 
    } 
    catch (e) { 
     console.log("cannot find element"); 
     return; 
     } 
}, 0) 
0

テキストを入力として受け入れ、コンパイルしてコンポーネントを作成して要素に配置するディレクティブを作成する必要があります。

ngIfを見てください。これはやや類似しています。

関連する問題