在 Angular 2 中,当我尝试使用两种方式绑定时,ngIF 不起作用

Posted

技术标签:

【中文标题】在 Angular 2 中,当我尝试使用两种方式绑定时,ngIF 不起作用【英文标题】:In Angular 2, ngIF is not working when i am trying with two way binding 【发布时间】:2016-12-06 05:30:22 【问题描述】:

我正在使用Angular2 使用双向绑定概念[(ngModel)]。我的页面有表单,我必须验证元素的原始状态。因此,为了验证,我使用了ngIf 来检查元素的原始状态。但条件不起作用。我需要检查每个模型更改的原始状态。以下是我的app.component.html 页面:

 <form (ngSubmit)="angular2form(myAngular2Form.employeeDob)" [ngFormModel]="myAngular2Form">

 <input type="text" class="form-control" id="employee" name="employee" [(ngModel)]="employeeDob" required  />            
  <div *ngIf="employeeDob.pristine">
    <p>Please enter the date</p>
 </div>
 <button type="submit" class="btn btn-primary">Register</button>

</form>

这是我的组件:

 export class AppComponent 

employeeDob: String;

  constructor(private myform: FormBuilder) 
    this.employeeDob = '';
 
 angular2form(date) 
     alert("date submitted successfully");
 
 

感谢您的建议

【问题讨论】:

【参考方案1】:

<input type="text" class="form-control" id="employee" name="employee" [(ngModel)]="employeeDob" #date="ngModel" required /> <div [hidden]="date.valid || date.pristine"> <p>Please enter the date</p> </div>

直接输出文档

https://angular.io/docs/ts/latest/guide/forms.html

【讨论】:

例外:模板解析错误:没有将“exportAs”设置为“ngModel”的指令(“”class="form-control" id="employeeDob" [(ngModel)]="employeeDob " name="employeeDob" [错误 ->]#employeeDob="ngModel" 需要 /> 您使用的是什么版本的 Angular?我认为这在较新的版本中已修复。 github.com/angular/angular/issues/9363 我正在使用 angular - common/core 2.0.0-rc.1" 可悲的是,我相信我的答案仅适用于 rc.3 及更高版本【参考方案2】:

pristineControl 的属性,而不是 value 的属性。

你可能想使用

<input #employeeDobCtrl="ngForm" type="text" class="form-control" id="employee" name="employee" [(ngModel)]="employeeDob" required  />        
<div *ngIf="employeeDobCtrl.pristine">    

(对于旧的表单模块)

【讨论】:

【参考方案3】: 如果用户尚未与表单交互

pristine 为真。您可能想改为检查 dirty 吗?也可以使用hidden标签替换

<div *ngIf="employeeDob.pristine">

与:

<div [hidden]="employeeDob.pristine">

【讨论】:

以上是关于在 Angular 2 中,当我尝试使用两种方式绑定时,ngIF 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 @Input - 如何从父组件绑定子组件的 ID 属性?

AngularJS 初始化

angularJS 初始化

Angular 2 + Ionic 2:对象推送到数组,但是当我尝试使用它时它是空的

如何通过 Angular 方式示例在 Angular DataTables 中使用服务器端选项?

Angular 2:如何将 JavaScript 日期对象与 NgModel 两种方式绑定一起使用