2016-08-21 3 views
0

私は次のようなJSONオブジェクトを持っている:クリックイベントを角度2の関数にバインドするにはどうすればよいですか?

{Countries: [America, China, Russia, etc]} 

私はそれぞれの国のための私のcountries.component.tsで定義された関数(typescriptです)コンポーネントファイルがあります。

... 
America() { ... } 
China() { ... } 
Russia() { ... } 
etc 

は私がngForを持っていると仮定

<ul *ngFor="let country of Countries"> 
    <li> 
    <a (click)="{{country}}()" >{{country}}</a> 
    </li> 
</ul> 

私は「アメリカ」をクリックしたとき:JSON object.Iを反復処理は、このような方法で、クリックイベントをバインドできるようにしたい私のコンポーネントテンプレートアンカー要素は、 "America()"関数を呼び出します。

は、動的関数名にクリックイベントをバインドする方法は、(関数が静的に適切なコンポーネントクラスで定義されていても(すなわち。アメリカ、中国、ロシアなどが定義されている)がありますか?

感謝。。あなたの応答のために事前に

答えて

1

補間はあなたがしようとしたように動作していないよう あなたの問題に対する可能な解決策は*ngForに関数の引数を与えることです

コード:

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: ` 


    <ul *ngFor="let x of countries"> 
    <li> 
    <a (click)="doThis(x)" >{{x}}</a> 
    </li> 
</ul> 

    ` 
}) 
export class AppComponent { 
    constructor(){console.clear()} 



    public countries:any[]= ['America','China', 'Russia', 'Germany'] 



    doThis(x){ 


    console.log('life is life in '+ x) 
    } 



} 

Plunker

関連する問題