2017-02-01 19 views
3

エラーが報告されていないため何が間違っているのか分かりません。angular2 [innerHtml]を動作させる方法

私はコンポーネントクラス

import { Component, OnInit, ViewContainerRef } from '@angular/core'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent implements OnInit { 
testhtml = "<p>Hello world</p>"; 
    constructor(){} 

} 

} 

そして、私のテンプレートファイル内を持って、私はこのような何か:

<div class="blog-post">[innerHtml]="testhtml"</div> 

をしかし、これは動作するようには思えません。私がインポートする必要がある何か他にありますか?私は、角度cliの "バージョン" を使用しています

: "1.0.0-beta.26を"、

+0

」<=その要素の内容ではない属性です。 – Igor

+0

これは私のために働いた: http://stackoverflow.com/a/43862386/1048800 – jgatjens

答えて

11

値の補間のための角度使用{{property}}

<div class="blog-post">{{testhtml}}</div> 

しかし、それは、テキストではなく、HTMLを書き出します:それはあなたがそうのように、あなたのdivでプレーンテキストを表示するような方法です。 HTMLの場合

、あなたは私がdivタグ内に[innerHtml]を移動する性質

<div class="blog-post" [innerHtml]="testhtml"></div> 

ノートにバインドする必要があります。

あなたが再び補間する必要がありますので、属性に結合する角括弧を除外:

<div class="blog-post" innerHtml="{{testhtml}}"></div> 

結合性(2溶液)が好ましい方法です。

+0

なぜ解決策2( 'innerHtml =" {{testhtml}} ")が優先されますか? –

+0

@JamieStreet補間(解3)は実際にはプロパティバインディング(解法2)に変換されます - このセクションの下部を参照してください:https://angular.io/guide/template-syntax#interpolation---- Angularドキュメンテーションは奨励していますプロパティバインディングの構文は、他の開発者にはよく知られています。 –

+0

@JaimeStreet私はそれが不器用に言われていると思う。 '[innerHtml] =" testHtml "'が望ましい解決法です。 – MgSam

1

は、次のようなタグ内の属性を追加する必要があります。

<div class="blog-post" [innerHtml]="testhtml"></div>