取消选中所有选中的复选框Angular2

时间:2016-10-21 09:21:50

标签: angular

我有一个从ngFor循环和重置按钮生成的复选框列表。单击重置按钮时,如果选中任何复选框,我想取消选中它们。

这是我的HTML

<li *ngFor="let item of listItems" class="filter-list__item">
    <label class="filter-list__itemLabel">
        <input type="checkbox" value="{{item.id}}" [checked]="checked" />
        <span innerHTML="{{item.name}}"></span>
    </label>
</li>
<button (click)="resetAll()"></button>

3 个答案:

答案 0 :(得分:6)

您可能希望将checked属性绑定到项目状态,如下所示。

graph = { "a" : ["c"],
          "b" : ["c", "e"],
          "c" : ["a", "b", "d", "e", "h"],
          "d" : ["c"],
          "e" : ["b", "c"],
          "f" : ["g", "h"]
          "g" : ["f", "h"]
          "h" : ["c", "f", "g"]
        }

现在,您可以在组件中创建resetAll函数以访问列表项并将值重置为false

<li *ngFor="let item of listItems" class="filter-list__item">
    <label class="filter-list__itemLabel">
        <input type="checkbox" value="{{item.id}}" [checked]="item.checked" />
        <span innerHTML="{{item.name}}"></span>
    </label>
</li>

<button (click)="resetAll()"></button>

答案 1 :(得分:0)

我的解决方案如下,它就像一个魅力:

假设您正在使用模态对话。最好的方法是订阅onClose-Observable。然后,您只需使用自身的克隆覆盖基础列表。 Angular现在被强制重新绘制整个列表,它会自动删除所有刻度。

ngAfterViewInit() {

    this.modal.onClose.subscribe(() => {
        if (this.objectList) {
            this.objectList = JSON.parse(JSON.stringify(this.objectList));
        }
    });

}

如果您没有使用模态对话,只需实现一个方法来触发覆盖过程。

答案 2 :(得分:0)

Select All Checkbox & deslect All Checkbox 
Here this.categoryData is a array where all  category_id with nested are present 

// Deselect all catgory

resetAll() {
    this.accountCategories = [];

}

    selectAll() {
        let CategoryDataArray = [];
        this.categoryData.forEach(element => {
            if (element.sub_categories.length > 0) {
                element.sub_categories.forEach(subcategory => {
                    CategoryDataArray.push(subcategory.category_id)
                });
            }
            CategoryDataArray.push(element.category_id)

        });
        this.accountCategories = CategoryDataArray;
        var catArray = []
        if (this.accountCategories) {
            this.categoryArray.push(this.accountCategories)

            var categories = {};

            this.categoryArray[0].forEach(element => {
                if (!categories[element]) {
                    categories[element] = [];
                }
                categories[element] = { 'status': 'active' };
            });
            catArray.push(categories);
            return this.categoryResult = catArray
        }
    }