2016-12-24 7 views
2

を材料拡張パネルを使用してフィールドを設定するための適切な構文を説明し、私はこのリポジトリを使用しています:https://github.com/dart-lang/angular2_componentsは、ダーツ、角2材料から

次のコードチャンクがapp_component.htmlからです。私は資材拡張パネルにasignment:disableHeaderExpansionを追加しました。私はdisableHeaderExpansionを括弧で囲んでいるので、すべてうまく動作します。

<material-expansionpanel name="Expansion panel" [disableHeaderExpansion]="true"> 
    <div> 
     Oh hi. I was just trying not to take too much space here. 
    </div> 
    </material-expansionpanel> 

disableHeaderExpansionを囲む括弧を削除すると、コンポーネントが正しく表示されません。私は角度2つのコンポーネントにMaterialExpansionPanelを見て:私は名前フィールドにブラケットを配置すると、コンポーネントが同様表示されません

/// If true, clicking on the header does not expand or collapse the panel. 
    @Input() 
    bool disableHeaderExpansion = false; 

    /// A short name label for the expansion panel. 
    @Input() 
    String name; 

なぜ、私はdisableHeaderExpansionに角括弧を入れる必要がありますが、名前フィールドに角括弧を入れてはいけませんか?名前欄に角括弧を入れる必要があると思います。

この質問を入力した後、私はこれが答えになる可能性があることを認識しました。

Htmlには既に名前属性があるため、例外ですか? documentation 1として

答えて

2

次のすべてに該当する場合、我々は括弧を省略しなければならない:

  • targetプロパティは、文字列値を受け入れます。
  • 文字列は、テンプレートに焼き付けることができる固定値です。
  • この初期値は決して に変更されます。

のため、nameフィールドの角括弧を省略することができます。

角括弧は、テンプレートの式を評価するためにAngularに指示します。角括弧を忘れると、Angularは文字列を定数として扱い、その文字列でターゲットプロパティを初期化します。したがって、disableHeaderExpansionフィールドから角括弧を削除すると、角度で文字列として扱われますが、@Inputboolと宣言すると、コンポーネントプロパティの初期化が間違っているため、コンポーネントが正しく表示されません。

関連する問題