首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态添加模板驱动的角度2形式的输入要求

动态添加模板驱动的角度2形式的输入要求
EN

Stack Overflow用户
提问于 2018-02-06 14:47:32
回答 3查看 22.9K关注 0票数 9

模板驱动方法:以角2的形式向输入字段动态添加所需的属性。但是角形验证(form.valid)不能识别动态添加的所需字段。

代码语言:javascript
运行
复制
 <input type="text"  [(ngModel)]="coumnName" name="coumnName" >

添加动态需要的:

代码语言:javascript
运行
复制
document.getElementsByName(columnName)[0].setAttribute('required', '');
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-07 18:08:01

您可以使用与以反应性形式动态为FormControl设置验证器相同的技术,但可以使用NgForm指令。怎么会这样?对于NgForm指令,它实际上是如何创建注册到您在表单中分配的nameFormControl实例的。

因此,您可以做的是导入NgFormValidatorsViewChild来引用表单,并能够在组件中使用它。另外,我看到您的ngModel变量与name属性相同。那是行不通的,它们必须是独一无二的。

以下几点也是如此:

代码语言:javascript
运行
复制
<form #f="ngForm">
  <input [(ngModel)]="coumnNameModel" name="coumnName" #coumnName="ngModel">
</form>

在组件中,导入NgFormViewChild,然后使用setValidators()并设置所需的验证器,然后调用updateValueAndValidity()

代码语言:javascript
运行
复制
@ViewChild('f') myForm: NgForm;

// when you want to set required validator:
setRequired() {
  this.myForm.form.get('coumnName').setValidators([Validators.required])
  this.myForm.form.get('coumnName').updateValueAndValidity();
}

StackBlitz

票数 16
EN

Stack Overflow用户

发布于 2018-02-06 15:58:21

事实上,一旦开始数据绑定,就不再使用HTML属性了。您没有设置属性。您正在设置DOM元素、组件和指令的属性。

你可以读到这个官方医生

票数 2
EN

Stack Overflow用户

发布于 2019-01-08 15:46:34

只需加上:

代码语言:javascript
运行
复制
[required]="isConditionIsTrue"

在你的输入中。

您可以使用条件或布尔值。

注意:如果您正在使用formControls,则应该使用d:

添加所需控件或任何其他控件:

代码语言:javascript
运行
复制
this.form.addControl('formControlName', new FormControl(ValueToSet, Validators.required));

如果您想要删除所需的控件或任何其他控件:

代码语言:javascript
运行
复制
this.form.get('formControlName').reset();
this.form.removeControl('formControlName');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48645671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档