Angular 2引用了验证消息的控件
Angular 2 referring to controls for validation messages
我正在尝试让验证消息在Angular 2中工作。Angular 2的变化太多了,以至于在互联网上似乎没有一个优雅的解决方案(所以请不要把它标记为副本)。
目前,为了在我的模型驱动表单上显示验证消息,我这样做:
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" formControlName="name">
<div class="text-warn" *ngIf="!addUserForm.controls.name.pristine && !addUserForm.controls.name.valid">
Please enter a name
</div>
</div>
我的组件的formbuilder看起来像这样:
ngOnInit() {
this.addUserForm = this.fb.group({
name: ['', [Validators.required]],
email: ['', [Validators.compose([EmailValidators.normal(), Validators.required])]],
phone: ['', [Validators.compose([UniversalValidators.isNumber(), Validators.required])]],
address: this.fb.group({
addr1: ['', [Validators.required]],
addr2: [''],
addr3: [''],
city: ['', [Validators.required]],
zip: ['', [Validators.required]],
})
});
}
我记得我以前能够通过使用一个简单的*ngIf="!name.valid"
来显示验证消息,但现在我似乎无法在不参考整个表单组(*ngIf="!addUserForm.controls.name.valid"
)的情况下使其工作。如果我这样做,我得到一个关于valid
未定义的错误信息(大概是因为我不能直接参考控制,出于某种原因)。
这样做的一种方法是在组件中实现get
函数。所以你可以这样做:
get name() { return this.addUserForm.get('name') }
一旦你这样做了,在你的html模板中,你可以使用你正在寻找的语法。
*ngIf="!name.valid"
我记得我曾经能够通过使用一个简单的
*ngIf="!name.valid"
来显示验证消息…
我认为有可能使用 Template driven forms
而不使用 Reactive forms/Model driven forms
。
我也认为,与 Reactive forms/Model driven forms
,这是唯一的方法,因为你必须告诉angular2,其中 formGroup
,一个特定的控制附加到…
相关文章:
- 音频控件在mouseover上显示,在mouseout上淡出
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 如何更改文本框控件的不透明度值
- 所有控件的组合框
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 在angularjs中创建自定义控件的推荐方法
- 自定义控件中的双向绑定在SAPUI5中不起作用
- 如何在ASP中为用户控件添加Javascript对象网
- Dynamics 2016内部部署Crm客户端脚本.选项集控件类型缺少方法
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 在HTML5画布上添加按钮和控件
- 隐藏HTML5视频控件
- 显示使用 Jquery 的控件的错误消息
- Javascript在每个有问题的控件上输出一条错误消息
- 如何在几个ASP上显示/隐藏错误消息?. NET验证控件
- Angular 2引用了验证消息的控件
- 如何避免“Internet Explorer 限制此网页运行脚本或 ActiveX 控件”消息