如何在Angular2中显示和隐藏带有复选框元素的div?

Posted

技术标签:

【中文标题】如何在Angular2中显示和隐藏带有复选框元素的div?【英文标题】:How to show and hide a div with a checkbox element in Angular2? 【发布时间】:2016-05-28 19:07:07 【问题描述】:

我有一个复选框,我想要实现的是在选中复选框时隐藏div,并在 Angular 2.0 beta 中未选中时显示。

我知道如何使用此代码在 angular 1.2 中执行此操作

<label>
     <input type="checkbox" ng-model="showhidepregnant"/> Pregnant
</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

div上的代码

<div class="col-md-4 divhidetxtdpatient" ng-hide="showhidemasked">
      <input class="form-control" tabindex="1" id="id_field_specialist" ng-model="id_field_specialist" type="text" ng-blur="savespecialist()" placeholder="maskable"/>
</div>

提前致谢。

【问题讨论】:

您是否尝试过自己寻找解决方案?您对实际解决方案有意见吗? 【参考方案1】:

基本上你需要使用[hidden]属性绑定来显示和隐藏html

然后将[(ngModel)] 用于two way binding in Angular2 并使用(eventName) 将事件绑定到DOM。

标记

<label>
   <input type="checkbox" [(ngModel)]="showhidepregnant"/> Pregnant
</label>

<div class="col-md-4 divhidetxtdpatient" [hidden]="showhidemasked">
   <input class="form-control" tabindex="1" id="id_field_specialist" 
   [(ngModel)]="id_field_specialist" type="text" 
   (blur)="savespecialist()" placeholder="maskable"/>
</div>

【讨论】:

【参考方案2】:

你可以通过在checkbox属性的基础上应用(change)钩子来检查复选框是否被选中,尝试隐藏或显示div,

这里是同样的工作 plnkr:

http://plnkr.co/edit/mIj619FncOpfdwrR0KeG?p=preview

.ts 文件代码:

checked(value)
    if(document.getElementById('abc').checked==true)
      this.shown= true
    
    else if(document.getElementById('abc').checked==false)
      this.shown= false;
  

.html

<input type='checkbox' id= 'abc' (change)="checked('abc')">

<div *ngIf='shown'>
  Hello CheckBox
</div>

【讨论】:

【参考方案3】:

为您的复选框提供[(ngModel)],并为您的 div 标签使用相同的ngModel*ngIf。请参阅下面的代码示例。

<label>
   <input type="checkbox" [(ngModel)]="showhidepregnant"/> Pregnant
</label>

然后使用相同的模式:

<div class="col-md-4 divhidetxtdpatient" *ngIf="showhidepregnant">

注意:请同时在您的 .ts 文件中声明模型:

showhidepregnant: boolean;

【讨论】:

我们可以对角度上的反应形式使用相同的格式【参考方案4】:

您还可以使用 Angular 中的 #variable 语法。 checked (register.checked) 是输入元素的属性,它返回元素的检查状态。 注意:如果用户选中/取消选中复选框,则需要事件绑定(选中)来触发更改检查:

<div *ngIf="register.checked">
  <h1>Hallo</h1>
</div>
<label><input (change)="register" #register type="checkbox"> Register</label>

【讨论】:

以上是关于如何在Angular2中显示和隐藏带有复选框元素的div?的主要内容,如果未能解决你的问题,请参考以下文章

当涉及另一个复选框时,使用带有“checkbox.checked === true”的 if/then 命令隐藏/显示元素时出现问题

使用 Angular2 DevExtreme 显示和隐藏表单元素

根据复选框状态隐藏或显示 div

如何显示隐藏在JQuery中使用nearest和find方法选择的元素?

Angular 2显示和隐藏元素

PyQt-QtableView 标头。如何添加右上角的小按钮以隐藏/显示带有选中/未选中复选框的列?