javascript - ERROR 错误:找不到具有名称的控件:'[object Object]
问题描述
我正在使用 Reactive Forms,我正在尝试将我的表单传递给子组件,但我遇到了上面的错误。最初在表单的顶层,我使用 FormArray 来保存我的表单,并且在我尝试将其传递给子组件之前工作正常。感谢这篇文章,我现在知道表单的顶层应该是 FormGroup,而 FormArray 应该是 FormGroup 的子级。
所以现在我将我的 FormArray 嵌套在 FormGroup 中,我得到了上面的错误。我不确定我做错了什么?下面在相关代码中。
// 父组件.ts
ngOnInit() {
if (!!this.rows) {
this.tableForm = new FormArray([]);
this.rows.forEach((row) => {
this.rowGroup = new FormGroup({})
this.columns.forEach(column => {
this.rowGroup.addControl(column.key, new FormControl(row[column.key]));
});
this.tableForm.push(this.rowGroup);
})
this.tableGroup = new FormGroup({
rows: new FormControl(this.tableForm)
})
}
}
// 父 HTML
<section
*ngIf="!!modal"
class="modal__mask">
<section
class="modal__container"
#carousel
[ngStyle]="{'left': start + 'px'}"
(window:resize)="onResize($event)"
[formGroup]="tableGroup">
<div
*ngFor='let row of selectedRows; let i = index'
class="modal modal__large"
[formArrayName]="rows">
<div
[formGroupName]="i"
[ngClass]="{'opacity': modalPage !== i}">
<div class="modal__header modal__header--large">
<h6>Edit Employee Details</h6>
</div>
<div class="u-flex u-wrap">
<div
class="u-flex modal__body"
style="width: 50%"
*ngFor="let column of columns">
<div
*ngIf="column.label"
class="input__wrapper"
[ngClass]="{'input__wrapper--inline': layout === 'horizontal'}">
<z-input
*ngIf="column.label"
class="u-maxX"
[group]="tableGroup"
[config]="column">
</z-input>
<!-- <div>
<label
class="input__label">
<p class="t-bold t-data">{{column.label}}</p>
</label>
<div class="z-input__default">
<input
class="input u-maxX"
[formControlName]="column.key"
[value]="row[column.key]">
</div>
</div> -->
</div>
</div>
<section class="modal__footer u-fillRemaining">
<div class="u-flex">
<button
class="button button--medium"
(click)="nextSelectedRow()">
<div class="button__content">
<i
class="icon icon--medium"
*ngIf="!!icon">
{{icon}}
</i>
<span>Skip</span>
</div>
</button>
</div>
<div class="u-flex">
<button
class="button button--low"
(click)="reset(row, i)">
<div class="button__content">
<i
class="icon icon--medium"
*ngIf="!!icon">
{{icon}}
</i>
<span>Reset</span>
</div>
</button>
<button
class="button button--low"
(click)="saveChanges(row, i)">
<div class="button__content">
<i
class="icon icon--medium"
*ngIf="!!icon">
{{icon}}
</i>
<span>Save Changes</span>
</div>
</button>
</div>
</section>
</div>
</div>
</div>
// 子组件.ts
@Input() config;
@Input() group: FormGroup;
@Input() view: string;
@Input() layout: string;
// 子 HTML
<div
class="input__wrapper"
[ngClass]="{'input__wrapper--inline': layout === 'horizontal'}"
[formGroup]="group"
[ngSwitch]="config.type">
<label
class="input__label"
*ngIf="!!config.label">
<p class="t-bold t-data">{{config.label}}</p>
</label>
<z-select
*ngSwitchCase="'select'"
[config]="config"
[group]="group"
[view]="view"
gridColumn="1 / 5">
</z-select>
<div class="z-input__default">
<input
*ngSwitchDefault
class="input u-maxX"
[formControlName]="config.key"
[attr.type]="config.type"
[attr.placeholder]="config.placeholder">
</div>
解决方案
推荐阅读
- html - CSS Grid line 1 以边距开始,但不知道为什么
- javascript - jquery函数中的php变量
- reactjs - React Native - saveList 函数没有看到添加到状态的新项目,因此不会保存它
- c++ - 如何(如果可能)在 Visual Studio Code 中使用 FLTK?
- android - 在应用程序主题中设置字体时无法覆盖不同视图中的字体
- reactjs - 使用 useState 的 React Async 示例无法按预期工作,有什么问题?
- java - 如何修复 java.lang.ClassNotFoundException: kotlin.String
- postgresql - Golang Postgres Squirrel 语法错误 (SQLSTATE 42601)
- r - 如何使用 processR 包调整有节制的调解模型?
- python - 如何在该程序中实施财务功能?