2016-12-01 21 views
1

私が持っている:なぜngForの中でメンバー関数を呼び出せないのですか?

export class Foo { 
    id: number; 
    name: string; 

    public formatName() : string { 
     return this.name; 
    } 
} 

、テンプレートで:

<ul> 
    <li *ngFor="let foo of allFoos"> 
    <strong>{{foo.formatName()}}</strong> 
    </li> 
</ul> 

これが動作しないのはなぜ?私はちょうど私が親コンポーネントにformatName()機能を移動することでこの問題を回避し、代わりにthisを使用しての引数としてfooを与えることができますnode_modules/@angular/core/bundles/core.umd.js:3076 TypeError: self.context.$implicit.formatName is not a function

を取得しますが、それは私が欲しいものではありません。

<ul> 
    <li *ngFor="let foo of allFoos"> 
    <strong>{{formatName(foo)}}</strong> 
    </li> 
</ul> 

はアクセス例えばループ内に直接foo.nameもうまく動作します:

<ul> 
    <li *ngFor="let foo of allFoos"> 
    <strong>{{foo.name}}</strong> 
    </li> 
</ul> 

明らかに私の意図は、私の例でははるかに複雑formatName() 1以上を持つことです。

+0

あなたはPlunkerを提供することはできますか?コードのどの部分がどのコンポーネントであり、どのように関連しているのかを判断するのはかなり面倒です。 –

+0

また、オンサイトのStack Snippet([<]]ツールバーボタン)を使用することをお勧めします。 –

+0

ここでallFoosが定義されています。このテンプレートがFooコンポーネントに対応する場合、Fooには** private allFoos:Foo []; ** – kimy82

答えて

0

{{}}では、関数/メソッドはほとんど呼び出されません。Angular2はすべてのchangeEventでこれらのステートメントを更新するためです。あなたはコンポーネントクラスで、それをフォーマットし、唯一のプロパティ名を使用する必要があるたび

形式のinitに自分の名前やベター{{}}

関連する問題