3 回答

TA貢獻1797條經(jīng)驗 獲得超6個贊
如果您使用的是模型,那么這將非常容易和干凈。
假設(shè)您的機芯低于型號
calibres = [
{value: 1, isSelected: false},
{value: 5, isSelected: false},
{value: 4, isSelected: false}
];
當您從后端獲得數(shù)組時,只需檢查例如
backendArray = [2,4];
和一個函數(shù)檢查是獲取數(shù)據(jù)后選擇的標志
this.calibres = this.calibres.map(
(elem) =>{ elem.isSelected = this.backendArray.indexOf(elem.value) != -1 ? true : false;
return elem});
HTML 部分使用選中的屬性。更改時傳遞口徑,并將切換邏輯設(shè)置為 isSelected 標志
<div >
<mat-checkbox #checkBox
*ngFor="let calibre of calibres"
[checked]="calibre.isSelected"
[value]="calibre.value"
(change)="getCheckbox(calibre)"
class="example-margin mb-0 mt-1" >{{calibre.value}}</mat-checkbox>
</div>

TA貢獻1891條經(jīng)驗 獲得超3個贊
不能在循環(huán)中使用屬性。因為您為數(shù)組中按 ischeck 屬性篩選的項目創(chuàng)建復(fù)選框。因此,使用此屬性將完成您的工作[checked]=true
<mat-checkbox #checkBox
*ngFor="let calibre of calibres; let i = index"
[value]="calibre"
[checked]="true"
(change)="getCheckbox()"
class="example-margin mb-0 mt-1" >{{calibre}}</mat-checkbox>
更新:
getCheckbox() {
this.item.calibres = this.checkBox.map(checkbox => {
return {
value: checkbox.value,
isChecked: checkbox.checked
};
});
}
<mat-checkbox #checkBox
*ngFor="let calibre of calibres; let i = index"
[value]="calibre.value"
[checked]="calibre.isChecked"
(change)="getCheckbox()"
class="example-margin mb-0 mt-1" >{{calibre.value}}</mat-checkbox>

TA貢獻1817條經(jīng)驗 獲得超14個贊
希望這可以幫助將來的人,
我通過屬性綁定和一個小函數(shù)以簡單的方式解決了這個問題。
問題:我有一個數(shù)組,其值僅為選中的復(fù)選框,當用戶想要編輯它時,我必須再次顯示復(fù)選框,并且復(fù)選框已選中。Ex: Categories = ["a","d"]
溶液:
在 HTML 文件中 - 將屬性綁定與一個函數(shù)結(jié)合使用,該函數(shù)檢查數(shù)組中是否存在值并返回 true 或 false。(您也可以使用 *ngFor)
<h3>Category</h3>
<label><input type="checkbox" [checked]="checkCat('a')">a</label>
<label><input type="checkbox" [checked]="checkCat('b')">b</label>
<label><input type="checkbox" [checked]="checkCat('c')">c</label>
<label><input type="checkbox" [checked]="checkCat('d')">d</label>
在 .ts 文件內(nèi)
cat = ["a","d"]; // checkbox data received from backend
checkCat(data){
let ref = this.cat.find(x => x == data); // this checks the cat[] array
if(ref == data){
return true;
} else {
return false;
}
}
添加回答
舉報