*ngif 第一次点击后不工作。角 6

Posted

技术标签:

【中文标题】*ngif 第一次点击后不工作。角 6【英文标题】:*ngif Not working after first click. Angular 6 【发布时间】:2019-03-23 04:58:56 【问题描述】:

我想要实现的是,我在angular6中有一个Select字段,基于我想要隐藏和显示另一个div的选定值。

这里是代码。

 <div class="form-group">
          <label for="servicePriviledges">Managed</label>
          <select type="text" class="form-control" id="managedServiceInfo" name="managedInfo" [(ngModel)]="managed">
            <option value="false">False</option>
            <option value="true">True</option>
          </select>
           <br>
        </div>

<div class="form-group" *ngIf="managed">
          <label for="managerType" >Manager Type</label>
          <select type="text" aria-hidden="false" class="form-control" id="managerType" name="managerType">
            <option value="false">False</option>
            <option value="true">True</option>
          </select>
        </div>

*ngIf 在我第一次切换它时确实会产生影响,但之后不会。未检测到更改。

我什至尝试设置 style 的 visibility 属性以及 [hidden] 指令,但得到了相同的结果。

我什至尝试过提供 on change 方法,但结果没有变化。

版本信息:

"@angular/core": "^6.1.6",
"@angular/forms": "^6.1.6",

这两个控件都在“ngForm”表单下。

【问题讨论】:

【参考方案1】:

另一种方法是为每个选项附加[ngValue] 指令。

<select type="text" class="form-control" id="managedServiceInfo" name="managedInfo" [(ngModel)]="managed">
    <option [ngValue]="false">False</option>
    <option [ngValue]="true">True</option>
</select>

【讨论】:

【参考方案2】:

managed 的字符串值为'true''false' 像这样更新ngIf

<div class="form-group" *ngIf="managed === 'true'">
 ...
 </div>

或者你可以使用 ngValue 所以 managed 会有一个布尔值 true , false

 <select type="text" class="form-control" name="managedInfo" [(ngModel)]="managed">
   <option [ngValue]="false">False</option>
   <option [ngValue]="true">True</option>
  </select>

【讨论】:

我们对第二种方法也有同样的想法。无论如何,+1。

以上是关于*ngif 第一次点击后不工作。角 6的主要内容,如果未能解决你的问题,请参考以下文章

第一次后不显示 Ajax 加载屏幕

角材料步进器“分页”

角。仅绑定一次事件(在第一次初始化时)

如何让linkbutton点击后不刷新页面

iOS 发布到 Facebook 发布屏幕在身份验证后不显示

按下按钮后不显示活动,带有按钮的一次性活动