angular.js 4(material.angular)のマトリックスにチェックボックスが表示されています。ユーザーがチェックボックスをクリックすると、HTTPリクエストがバックエンドサーバーに送信されます。何らかの理由でバックエンドサーバが利用できない場合やサービスコールが間違っている場合は、チェックボックスを元の状態(チェックボックスをオンにした状態)に戻します。したがって、私は、サービスの呼び出しを行うために、以下の変更のEventHandlerを実装し、サービスコールの結果に依存して反応する:変更されたイベントリスナーを介してチェックボックスのチェック属性を設定する方法
zuordnungChanged(rolle_id: string, recht_id: string) {
let a = this.zuordnungsmatrix["Rolle_" + rolle_id + "_Recht_" + recht_id];
if (a === true){
this.rechtematrix.rechtEntziehen(rolle_id, recht_id).subscribe(() => {
a = false;
this.zuordnungsmatrix["Rolle_" + rolle_id + "_Recht_" + recht_id] = a;
//Notify user
});
},
() => {
//Notify user
});
} else {
this.rechtematrix.rechtVergeben(rolle_id, recht_id).subscribe(() => {
a = true;
this.zuordnungsmatrix["Rolle_" + rolle_id + "_Recht_" + recht_id] = a;
//Notify User
});
},
() => {
//Notify user
}
);
}
}
zuordnungsmatrix変数が定義されており、そのように満たされている:
private zuordnungen: Array<any>;
private zuordnungsmatrix = [];
erstelleZuordnungsmatrix(): void {
for (let rolle of this.zuordnungen) {
for (let recht of rolle.recht_ids) {
this.zuordnungsmatrix["Rolle_" + rolle.rolle_id + "_Recht_" + recht] = true;
}
}
}
zuordnungsmatrixの値をチェックボックスのチェック属性にチェックしました。
<table td-data-table *ngIf="rechteUndRollenVorhanden()">
<tr>
<th td-data-table-column></th>
<th td-data-table-column *ngFor="let rolle of rollen" [id]="'Rolle_' + rolle.rolle_id">{{rolle.beschreibung}}</th>
</tr>
<tr td-data-table-row *ngFor="let recht of rechte" [id]="'Recht_' + recht.recht_id">
<td td-data-table-cell>{{recht.beschreibung}}</td>
<td td-data-table-cell *ngFor="let rolle of rollen">
<md-checkbox [id]="'Rolle_' + rolle.rolle_id + '_Recht_' + recht.recht_id"
[checked]="zuordnungsmatrix['Rolle_' + rolle.rolle_id + '_Recht_' + recht.recht_id] ? true : false"
(change)="zuordnungChanged(rolle.rolle_id, recht.recht_id, $event)">{{zuordnungsmatrix['Rolle_' + rolle.rolle_id + '_Recht_' + recht.recht_id] ? true : false}}
</md-checkbox>
</td>
</tr>
</table>
私の問題は、チェックボックスがzuordnungsmatrixの実際の状態を表す方法を知らないことです。変数が更新され、ビューにこの結合は、同様に動作します:
{{zuordnungsmatrix['Rolle_' + rolle.rolle_id + '_Recht_' + recht.recht_id] ? true : false}}
しかし、私は、チェックボックスを更新するために多くのことを試みたが、それは動作しませんでした。とにかく、チェックボックスのチェック状態の初期設定は正常に動作します。独自のイベントリスナーでチェックボックスの状態を更新するにはどうすればよいですか?
https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5Dを見ましたか? – Tschallacka
ええ、私はあなたが投稿したドキュメントが角<2.0 –