我在angular.js 4(with material.angular)中填充了複選框。當用戶點擊一個複選框時,HTTP-Request被髮送到後端服務器。如果後端服務器不可用或服務調用出於任何原因而出現錯誤,我希望複選框返回到之前的狀態(選中/未選中)。因此,我實現下列變化事件處理程序,使服務調用和反應依賴於服務調用的結果:如何通過其changed-eventlistener設置複選框的checked-attribute
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的值綁定到類似於此的複選框'checked-attribute:
<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}}
但我嘗試了很多更新的複選框,但它沒有工作。無論如何,複選框'checked-state'的初始設置工作正常。我如何更新自己的事件監聽器中的複選框狀態?
你看過https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D嗎? – Tschallacka
是的,我有,但你發佈的文件是角度<2.0 –