【问题标题】:Angular 2 checkbox check allAngular 2复选框选中所有
【发布时间】:2016-02-25 13:33:36
【问题描述】:

我有一个检查项目名称的列表。在底部我想放置一个复选框来选中或取消选中它们。我想我需要一个 *ngIf (如果选中)和一个 *ngFor 循环(检查所有),但这是一个很大的挑战......我不知道我应该如何处理这个。我是使用 (checked) 还是 *ngIf="(checked)" 然后使用 *ngFor 循环来设置 project.isChecked。我无法理解这个逻辑。

<div id="drp-project-select">
        <div class="scroller" [hidden]="!showMenu">
            <div id="search-wrapper">
                <i class="fa fa-search fa-xs"></i>
                <input [(ngModel)]="searchTerm" type="text" placeholder="Zoek op naam..." #search>
            </div>   
            <ul>
                <li *ngFor="#project of projectdata.LoginResponse?.ProjectVM | searchpipe:'Project':search.value">
                    <label class="checkbox-label" >
                        <input type="checkbox" class="dropdown-checkbox" [(ngModel)]="project.isChecked" (change)="addProject(project)" >
                        <span>{{project.Project}}</span>
                    </label>
                </li>
            </ul>
        </div>
        <div class="bottom-data" [hidden]="!showMenu">
            <label><input type="checkbox" id="bottom-checkbox"></label>
        </div>
    </div>

【问题讨论】:

    标签: angular


    【解决方案1】:

    我会在“选中/取消选中所有”复选框上使用控件,以便在用户选中或取消选中时收到通知:

    <input type="checkbox" [ngFormControl]="allCtrl"/>
    

    allCtrl 在组件的构造函数中初始化。然后您可以注册此控件的valueChanges 属性以收到更新通知并相应地更新isChecked 字段:

    constructor() {
      this.allCtrl = new Control();
      this.allCtrl.valueChanges.subscribe(
        (val) => {
          this.projectdata.LoginResponse.ProjectVM.forEach((project) => {
            project.isChecked = val;
          });
        });
    }
    

    【讨论】:

    • 我收到一条错误消息,提示“意外的令牌”。仔细检查后,我想知道猫王操作员是否有效,但没有。 elvis 运算符已从构造函数中删除,现在效果很好:) 您介意编辑您的答案,以便将来查找此帖子,该运算符不会抛出吗?然后我可以将你的答案标记为正确的。
    • 天哪。这是一个错字。 Elvis 运算符只能与视图中的表达式一起使用,而不能在 TypeScript 代码中使用……感谢您指出这一点!我更新了我的答案。
    • Control 来自哪里?
    • 谢谢你;这是比当前代码中的$(this).click() 更好的重构。但是,我的问题是,在为单个复选框调用事件时,isChecked 属性尚未更新。
    猜你喜欢
    • 2023-04-04
    • 2020-12-12
    • 2019-04-30
    • 1970-01-01
    • 2019-01-29
    • 2017-06-02
    • 2021-03-22
    • 1970-01-01
    • 2018-01-26
    相关资源
    最近更新 更多