我将模板放在*ngIF下,它只在加载表单后生成。此外,我将失败的表单放在动态显示的字段下,这取决于按钮的按下。我注销表单,它会返回正确缺失的FormControl。
模板:
<div *ngIf="ready">
<form [formGroup]="form">
<div [formGroup]="form.controls.request">
<div *ngFor="let field of inputFields">
...
</div>
</div>
<div *ngIf="somethingEnabled">
<div [formGroup]="form.controls.Something">
<div class="input-container">
<label>Name: </label>
<input formControlName="Name">
</div>
<div [formGroup]="form.controls.Something.Organization">
<div class="input-container">
<label>ASD: </label>
<input formControlName="ASD">
</div>
<div [formGroup]="form.controls.Something.Organization.Other">
<div class="input-container">
<label>Id: </label>
<input formControlName="Id">
</div>
<div [formGroup]="form.controls.Something.Organization.Other.SchmeNm">
<div class="input-container">
<label>SchmeName: </label>
<input formControlName="SchmeName">
</div>
<div class="input-container">
<label>SchmeValue: </label>
<input formControlName="SchmeValue">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
法典:
generateForm() {
this.form = this.fb.group({
request: this.fb.group(
this.generateRequestFields())
,
Something: this.fb.group(this.generateSomething()),
address: this.fb.group(
this.generateAddress()
)
});
}
generateSomething() {
const returnObject = {};
returnObject['Name'] = new FormControl();
returnObject['Organization'] = this.fb.group(this.generateOrganization());
return returnObject;
}
generateOrganization() {
const returnObject = {};
returnObject['ASD'] = new FormControl();
returnObject['Other'] = this.fb.group({
Id: new FormControl(),
Schme: this.fb.group({
SchmeName: new FormControl(),
ShcmeValue: new FormControl()
}),
Issr: new FormControl()
});
return returnObject;
}
我只在激活form.controls.something部分时得到错误。如果我删除模板中的form . controls . something . organization部分,效果会很好。
错误:错误:formGroup需要formGroup实例。请把一个传进来。
我可能只是错过了一些东西,并希望我会找到它,而张贴这一点,但似乎仍然不能得到它
可能如果你< code > console . log(this . form . controls . something . organization)它也会返回undefined。对于您添加的每个窗体组,您必须首先访问它的控件,然后进入下一个级别,如:
<div [formGroup]="form.controls.Something.controls.Organization">
...
<div [formGroup]="form.controls.Something.controls.Organization.controls.Other">
...
试试看。如果不起作用(无法访问< code >某些内容),也可以尝试:
<div [formGroup]="form.get("Something").get("Organization")">
表单。控件
将浏览您定义的确切路径,而将形成。get
将转到您指定的精确控件,这对于多层表单很有用,便于维护和阅读。
让我们知道您能得到什么。
当您在 formGroup 中时,您无需访问父窗体的控件来定义其子窗体组,只需使用名称
<form [formGroup]="form">
<div [formGroup]="request">
<div *ngFor="let field of inputFields">
...
</div>
对于嵌套的表单组,请使用< code>formGroupName而不是< code>formGroup。
有人帮忙吗? 我清除了节点模块并:
问题内容: 具有角形的这种普通(名称属性由服务器要求)形式,无法弄清楚如何使验证有效。我应该在ng-show =“ TODO”中添加什么 http://jsfiddle.net/Xk3VB/7/ ps:这只是一种形式,更复杂 谢谢 问题答案: AngularJS依靠输入名称来暴露验证错误。 不幸的是,到目前为止,不可能(不使用自定义指令)动态生成输入的名称。确实,检查输入文档,我们可以看到name
我有一个json,包含如下对象数组 在我看来,我想用ngFor呈现json,就像这样 你的名字叫什么? abc 定义 Ghi jkl
问题内容: 我有一个JSON对象,表示为: 我需要在 第二 层上做一个中继器,列出“虚假”数字。 我已经知道如何获得最高水平 但是我不清楚循环降级的顺序。例如,这是错误的: 我也知道如何 嵌套 中继器来实现这一点,但是在这种情况下,我根本不需要显示顶层。 澄清说明 这里的目标是有一个带有4个“伪”数字的列表(每个包裹有2个,顺序中有2个包裹)。 问题答案: 大量搜索不错的简单解决方案以进行动态迭代
只使用一个集合很好,但是我需要编辑外部窗体的原型,所以它为每一行呈现内部窗体的原型。 你知道我该怎么做吗?还有什么是最好的储蓄方式 编辑:现在我正在尝试呈现嵌套窗体的原型: 促销特征选择类型 第一级原型,工作很好。
我有一个返回用户对象的角度服务。用户对象有自己的属性和一组墙。服务向调用组件返回一个可观察的。在该服务中,我能够从http服务返回的json创建用户对象。但是,当我订阅组件中的服务时,返回的对象为null。我做错了什么?