当我们尝试使用 formGroup 时,我们会遇到一些错误。我需要一些关于表单组的解释。我想创建一个包含数据的表单组。数据需要逐行显示。 当我运行它时,我们使用 Angular 8 ,我收到此错误:
路径没有表单控件的值访问器:'rowDetails -> 0 -> no'
我有这个组件的构造函数:
constructor(
public fb: FormBuilder
) {
this.summaryForm = this.fb.group({
rowDetails: this.fb.array([])
})
}
Run Code Online (Sandbox Code Playgroud)
我有这个组件控制器:
ngOnInit() {
this.productList = (this.selectedReceiptBatch.incomeSummary as SaleSummary).sales;
this.summaryForm = this.fb.group({
rowDetails: this.fb.array(
this.productList.map(x=> this.fb.group({
'no': x.product.code,
'desc': x.product.productClass,
'numberx': [x.number.x],
'numbery': x.number.y,
'amountz': x.number.z,
'reference': [x.reference]
})
))
});
console.log(this.summaryForm);
this.formControlAvailable = true;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div *ngIf="formControlAvailable">
<div>
<div [formGroup]="summaryForm">
<div formArrayName="rowDetails">
<div *ngFor="let row of summaryForm.controls.rowDetails.controls; let index = index">
<div [formGroupName]="index"> …Run Code Online (Sandbox Code Playgroud) 我想用 Joi 在我的身体中进行验证,但它似乎永远不起作用并且总是处于相同的状态。所以如果我用这个发布
端点:/elasticSearch?eType=scroll&scroll=1h
身体:{}
应该会抛出错误,因为 eType 是滚动的,在这种情况下,scroll_id需要是必需的,不能为 null,不能为空。
即使我用这个发帖
端点:/elasticSearch?eType=search&scroll=1h
身体:{}
这应该会引发错误,因为 eType 是搜索,在这种情况下需要需要查询。
所以有了这些代码,
在一种情况下,它总是像没有验证一样通过,即使它们在我看来不应该通过,而在第二种情况下,我收到错误:需要查询,并且当我拨打电话时始终需要scroll_id。
所以有人可以帮助我理解为什么这些验证是错误的?
谢谢
默认情况下,如果我这样做:
body:
{
query:
Joi.alternatives()
.when(Joi.ref('$query.eType'),
{
is: Joi.string().equal('search'),
then: Joi.required()
}
),
scroll_id:
Joi.alternatives()
.when(Joi.ref('$query.eType'),
{
is: Joi.string().equal('scroll'),
then: Joi.required()
}
)
}
Run Code Online (Sandbox Code Playgroud)
这始终需要查询和scroll_id。
angular ×1
angular6 ×1
formarray ×1
formgroups ×1
forms ×1
hapi.js ×1
javascript ×1
joi ×1
node.js ×1
validation ×1