angular 6 动态生成表单 验证问题

发布于 2022-09-07 23:02:40 字数 1174 浏览 19 评论 0

最近在做一个项目,点击左侧菜单,生成对应的表格,如下

图片描述

,生成的表格可以 新增 一条数据,新增的form页如下:

图片描述

,现在遇到一个问题,就是在 新增 form页,因为整个form页,是动态生成的,验证无法完成(本人目前能力有限)。我看 ng6 官方动态表单实例,虽然表单也是动态的,但是表单中的各项,都是同一个类的实例,并且用了
ts:

export class DynamicFormQuestionComponent {
  @Input() question: QuestionBase<any>;
  @Input() form: FormGroup;
  get isValid() { return this.form.controls[this.question.key].valid; }
}

html:

<div >
  <input  [formControlName]="question.key" [id]="question.key" [type]="question.type">
</div> 
<div class="errorMessage" *ngIf="!isValid">{{question.label}} is required</div>

,我想请问,在ts文件中,1.get isValid() 函数的作用,2.以及为什么在form表单中输入数
据时,get isValid()函数会将所有的input控件轮询一遍,this.question.key为什么能够
在轮询的时候切换QuestionBase类中的属性;3.如果现在表单中的数据完全动态(即不是QuestionBase的实例),那么该怎样去验证表单中的数据?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暮年 2022-09-14 23:02:40

1.get isValid() 函数的作用,
判断表单提交前是否合理,合理的话返回一个true。所以*ngIf="!isValid"就是不合理会显示提示。
比方有时候form是内嵌在modal里的,没有submit按钮,所以得在(nzOnOk)="submitForm()"中判断一次。

if(!this.isValid){
      return;
    }

2.[this.question.key]不是写死的,所以可以动态查找阿。

3.完全动态就是遍历插入


const group = this.fb.group({});
this.config.forEach(control => group.addControl(control.name, this.fb.control('')));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文