javascript - 找不到带有角度路径的控件
问题描述
我正在使用 Angular 6 应用程序并使用动态表单。
app.component.html:
<form (ngSubmit)="onSubmit()" [formGroup]="form">
<div formArrayName="multiDynamic">
<!-- row -->
<div *ngFor="let record of form.controls.multiDynamic.controls; let i=index">
<div class="row" [formGroupName]="i">
<div class="col-md-6" *ngFor="let question of model.questions">
<div [ngSwitch]="question.controlType">
<div class="form-group form-black label-floating">
<label class="control-label">{{question.text | titlecase}} </label>
<div *ngSwitchCase="'textbox'"><input type="text" class="form-control" [formControlName]="question.key"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<button type="submit> Submit </button>
</form>
app.component.ts:从'@angular/core'导入{组件,OnInit,输入};从“@angular/forms”导入 { FormBuilder、FormGroup、Validators、FormControl、FormArray };
export class AppComponent implements OnInit {
@Input() model: any;
form: FormGroup;
ngOnInit() {
this.sharedService.getData().subscribe(data => {
this.items = data;
console.log(this.items);
});
this.form = this.fb.group({
multiDynamic: this.fb.array([
this.model.toGroup()
])
});
}
}
console.log(model.questions) 给出以下(扩展数组),
0:Textbox {controlType: "textbox", key: "url-links", text: "url-links"}
1:Textbox {controlType: "textbox", key: "//input[@id='rcmloginuser']", text: "//input[@id='rcmloginuser']"}
2:Textbox {controlType: "textbox", key: "//input[@id='rcmloginpwd']", text: "//input[@id='rcmloginpwd']"}
3:Textbox {controlType: "textbox", key: "//input[@id='rcmloginsubmit'] ", text: "//input[@id='rcmloginsubmit'] "}
我正在使用上面的 html 和 ts 文件,如果我给出这一行,
<input id="i" type="text" class="form-control" [formControlName]="question.text">
我收到错误消息, 找不到带有路径的控件:'multiDynamic -> 0 -> url-links'
在标签中,
<label class="control-label"> {{question.text | titlecase}} </label>
文本值正在显示,但如果我在输入框中给出 formControlName,那么我会收到此错误。
我正在使用角度的动态形式。
this.model.toGroup()
有以下内容,
export class DynamicFormMultiModel {
questions = [];
multiDataResponse: any = [];
form: FormGroup;
toGroup() {
const group: any = {};
this.questions.forEach((question) => {
group[question.key] = new FormControl('');
});
return new FormGroup(group);
}
patchData() {
const arrayGroup: any = {};
const dataRes: any = [];
const resObj: any = {};
// this.multiDataResponse.forEach((element, index) => {
// this.questions.forEach((question, inx) => {
// arrayGroup[question.key] = new FormControl(element[question.key]);
// });
// });
resObj['data'] = this.multiDataResponse;
// return new FormGroup(arrayGroup);
return resObj;
}
}
由于我有嵌套代码,我无法发布整个代码,但我正在获取数据并将其显示在标签中,但输入标签抛出错误。(两者都包含相同的值question.text
)。
附上场景截图。
请帮我解决这个卡在里面太久的问题..
解决方案
推荐阅读
- reactjs - NextAuth 提供者组件
- javascript - 如何使用javascript解析graphql字段参数
- excel - 从公式结果生成超链接
- javascript - 在网格上移动js
- css - MathJax 方程的默认颜色
- android - 在 AndroidViewModel 中使用哪个上下文适合从 strings.xml 获取字符串值
- django - Django admin - 基于相关父模型的属性选项
- sql - 为什么在 where 子句中的字段周围添加括号会加快我的 SQL 查询速度?
- javascript - 我想将所有 div html 2 json 转换为 html
- javascript - 如何以正确的方式使用 angularfire 从 Firestore 获取和观察用户?