小编sam*_*ote的帖子

为什么我收到这些错误“没有带有路径的表单控件的值访问器:'rowDetails -> 0 -> no'”

当我们尝试使用 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)

forms angular formarray formgroups angular6

3
推荐指数
1
解决办法
4747
查看次数

Joi 多个条件时

我想用 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。

javascript validation node.js joi hapi.js

1
推荐指数
1
解决办法
4226
查看次数