以 angular 反应形式在动态生成的复选框中显示所需的验证消息
Showing required validation message in dynamically generated checkbox in angular reactive form
我在版本 13 中创建了一个 angular 项目。我按照 link (https://coryrylan.com/blog/creating-a-dynamic-checkbox-list-in-angular) 创建了一个带有动态生成的复选框的表单。该复选框工作正常。动态生成的复选框需要验证。现在我想显示所需的验证消息。这是我的代码:
<form [formGroup]="form" (ngSubmit)="submit()">
<label formArrayName="orders" *ngFor="let order of ordersFormArray.controls; let i = index">
<input type="checkbox" [formControlName]="i" />
{{ordersData[i].name}}
</label>
<span *ngIf="ordersFormArray.errors?.required"> At least one order must be selected </span>
<br />
<button type="submit">submit</button>
</form>
但我收到以下错误:
Property 'required' comes from an index signature, so it must be accessed with ['required'].
<span *ngIf="ordersFormArray.errors?.required">
改成这样:
*ngIf="ordersFormArray.errors?.['required']"
这是 Angular13 中的正确方法。
如果您查看错误,它说 属性 来自索引签名,必须使用 ['required']
访问。这实际上就是解决方案。自 v13 以来,许多错误也变得有意义,而且这是现在访问它的正确方法。我在下面展示了新旧方式。
所以实际上这就是需要解决的问题。
老办法
<div *ngIf="ordersFormArray.errors?.required"> At least one order must be selected</div>
新方式
<div *ngIf="ordersFormArray.errors?.['required']">At least one order must be selected</div>
我在版本 13 中创建了一个 angular 项目。我按照 link (https://coryrylan.com/blog/creating-a-dynamic-checkbox-list-in-angular) 创建了一个带有动态生成的复选框的表单。该复选框工作正常。动态生成的复选框需要验证。现在我想显示所需的验证消息。这是我的代码:
<form [formGroup]="form" (ngSubmit)="submit()">
<label formArrayName="orders" *ngFor="let order of ordersFormArray.controls; let i = index">
<input type="checkbox" [formControlName]="i" />
{{ordersData[i].name}}
</label>
<span *ngIf="ordersFormArray.errors?.required"> At least one order must be selected </span>
<br />
<button type="submit">submit</button>
</form>
但我收到以下错误:
Property 'required' comes from an index signature, so it must be accessed with ['required']. <span *ngIf="ordersFormArray.errors?.required">
改成这样: *ngIf="ordersFormArray.errors?.['required']" 这是 Angular13 中的正确方法。
如果您查看错误,它说 属性 来自索引签名,必须使用 ['required']
访问。这实际上就是解决方案。自 v13 以来,许多错误也变得有意义,而且这是现在访问它的正确方法。我在下面展示了新旧方式。
所以实际上这就是需要解决的问题。
老办法
<div *ngIf="ordersFormArray.errors?.required"> At least one order must be selected</div>
新方式
<div *ngIf="ordersFormArray.errors?.['required']">At least one order must be selected</div>