2017-03-01 13 views
0

コンポーネントのテンプレートでngForループがあります:ngFor-loopの現在の項目をイベントのコールバックに渡すにはどうすればいいですか?

@Component({ 
    template:' 
    <div *ngIf="List"> 
     <div *ngFor="let item of List" (click)="onSelect(item)"> 
     ... 
    </div> 
    </div> ' 
}) 
export class ListComponent implements OnInit { 
    List: MyCustomItem[]; 
    ngOnInit() { 
    //load List from server 
    } 

    onSelect(item: MyCustomItem) {...} 
} 

は、だから私は、ユーザーが要素をクリックすると、引数として必要なMyCustomItemインスタンスを渡すときにコールバックを呼び出すにonSelectたいです。しかし、このコードは動作しません(onSelectは未定義です)。どうしたらいいですか?

+0

もっとコードを投稿してください。 'List'はどのように見えますか?これは通常動作します。 –

+0

@GünterZöchbauer、私は私の質問を更新しました – Mergasov

+2

動作する必要があります。 。 .. 。 。 –

答えて

2

通常、サーバーからListデータを正しく取得している場合にのみ、このコードは機能するはずです。

"が未定義を得るONSELECT":

をこれはあなたのリストが空であることを意味しています。リストサービスからデータを取得していることを確認してください。

コメントで示唆されているように、ngOnInit()関数内のコードを投稿してトラブルシューティングを行うことができました。また、サービスを使用している場合は、サービスにコードを挿入してリストを取得します。

+0

あなたはほぼ正しいです。 MyCustomItemのtypescriptプロパティが無効(つまりサーバー側モデルと同じではない)なので、Listのアイテムを正しく読み込んだので、onSelectはプロパティをサーバーモデルからMyCustomItemインスタンスに引数としてバインドできませんでした。 – Mergasov

+0

ああ、申し訳ありません!たぶん「サーバーからリストデータを正しく取得する」が広すぎるかもしれません。うれしいことは今働いている! – OmarIlias

関連する問題