Angular 2、少しデータを含むテーブルを表示しています。テーブルをクリックしたときにそのデータを取得したいのですが、
これがコードです:
HTMLテンプレート:
<tr *ngFor="let users of usersdata; let i = index">
<td (click)="data(users.username)">{{users.username}}</td>
<td (click)="data(users.email)">{{users.email}}</td>
<td (click)="data(users.id)">{{users.id}}</td>
<td (click)="data(users.roleId)">{{users.roleId}}</td>
</tr>
これは私のコンポーネントです:
data(data: string) {
this.selectedParam.emit(data);
console.log(data);
}
クリックすると、このエラーが発生します。
EXCEPTION: Error in .../userslist.component.html:22:16 caused by: self.parent._el_24 is not a function
[(ngModel)]
を使用して、データをコンポーネントに双方向バインディングします。以下のように
<td [(ngModel)]="users.username" (click)="data(users.username)">{{users.username}}</td>
またお試しください
//$event will hold value and other reference.
data($event: any) {
}
[]および()表記でangular2側でより多くの参照を取得できます
コンポーネントのようにパブリック配列を作成する必要があります。
public usersdata:any;
data(data: string) {
this.usersdata = data;
console.log(this.usersdata);
htmlテンプレートでアクセスできるようになりました
<tr *ngFor="let users of usersdata; let i = index">
<td (click)="data(users.username)">{{users.username}}</td>
<td (click)="data(users.email)">{{users.email}}</td>
<td (click)="data(users.id)">{{users.id}}</td>
<td (click)="data(users.roleId)">{{users.roleId}}</td>
data(data: string) {
this.selectedParam.emit(data);
console.log(data);
}
上記の場合、問題が発生する可能性があるため、関数名とパラメーター名は同じにしないでください。パラメータの名前を変更する
data(datavalue: string) {
this.selectedParam.emit(datavalue);
console.log(datavalue);
}
EventEmitterのドキュメント を参照してください。カスタムコンポーネントは、基本的にはOutput()
ディレクティブとEventEmitter
を実装した例のようになります。