2016-12-03 8 views
0

チェックボックスの値を初期化して操作するにはどうすればよいですか?私は非常に多くの例を見てきましたが、いずれも動かすことができませんでした。角2ハッシュマップからチェックボックスを初期化する

私は、行がタスクを表すN x Mテーブルと、学生の列を提示しようとしています。考え方は、テーブルのチェックボックスの1つをチェックすると、学生にタスクが割り当てられるということです。

すべてのチェックボックスの値を含むタイスクリプトハッシュマップがあります。

assigned : { [key:string]:boolean; } = {}; 

ハッシュキーがある:

var key = a.TaskId + '_' + a.StudentId; 

テーブルは、ネストされたngForで生成され:

cbValue(taskItem, studentItem) { 
    var key = taskItem.TaskId + '_' +studentItem.StudentId; 
    return this.assigned[key]; 
} 

<tr *ngFor="let t of tasks"> 

    <td>Task Name for task... {{t.taskId}}&nbsp; &nbsp;</td> 
    <td *ngFor="let s of students"> 

    <input type="checkbox" name=#{{t.TaskId}}_{{s.StudentId}} change="onAssignmentChange(t,s)" [checked]="cbValue(t, s)"> 

    </td> 
</tr> 

cbValue(T、S)のように見えます

これは機能しません。タのすべてのチェックボックスハッシュの値が何であっても、チェックはチェックされません。

は私も試してみた:

<input type="checkbox" change="onAssignmentChange(t,s)" [checked]="cbValue(t, s)"> 

    <input type="checkbox" change="onAssignmentChange(t,s)" [(ngModel)]={{t.TaskId}}+'_'+{{s.StudentId}} > 

    <input type="checkbox" change="onAssignmentChange(t,s)" [(ngModel)]="assigned[t.TaskId"+'_'+"s.StudentId"]> 

いずれもが動作します。

私はここでかなり暗いと思われます。コンソールにエラーが表示されなくても、 'onAssignmentChange'にはヒットしません。

また、

... name=#{{t.TaskId}}_{{s.StudentId}} ... 

が、これは地元のターゲットか何かすることになっていますか?当社ではJavaScriptのブラケットプロパティアクセサを使用しているので、私たちはただ、ストレートassignedオブジェクトにバインドしようとしているとして予め

答えて

0

おかげでこれはかなり簡単です、我々はまたを通じて財産のフリー・ダイナミック・インスタンス化を取得テンプレート(汚い、おそらく強力ですが)。また、あなたがこれを処理しているところはどこでも、後に欠損値がfalseであることを前提としていますチャンピオンのようなhttp://plnkr.co/edit/9RorhJnv42cCJanWb80L?p=preview

+0

ワークス:

<tr *ngFor="let t of tasks"> <td>Task Name for task... {{t.taskName}}&nbsp; &nbsp;</td> <td *ngFor="let s of students"> <input type="checkbox" name="{{t.taskId}}_{{s.studentId}}" [(ngModel)]="assigned[t.taskId + '_' + s.studentId]"> </td> </tr> 

テンプレートはここで実証するplunkerです。本当にありがとう;特にplunkrのために。 {{}}をいつ使用するのか、そうでないのかをどのように知っていますか? – user2785918

+0

テンプレート構文であるIIRCの入門書があります。https://angular.io/docs/ts/latest/guide/template-syntax.html#!#binding-syntax '[]'と '{{ }} 'は類似しており、データから見ることができます。'() 'はデータを表示します。 – silentsod

関連する問題