Size: a a a

Angular - русскоговорящее сообщество

2021 February 23

E

Eugene in Angular - русскоговорящее сообщество
Максим
ERROR Error: Cannot find control with name: '0'
у вас там точно FormArray? покажите код формы самой
источник

E

Eugene in Angular - русскоговорящее сообщество
Eugene
<div *ngFor="let attribute of form.get('attributes')['controls']; let i=index" [formGroup]="attribute">
 <div class="input-field">
   <input type="text" formControlName="name"  
   ...
</div>

а так?
[formGroup]="attribute" подправил, попробуйте еще так
источник

М

Максим in Angular - русскоговорящее сообщество
this.form = new FormGroup({
 name: new FormControl(null, Validators.required),
 descr: new FormControl(null, Validators.required),
 attributes: new FormArray([])
})




onSelectProject(project: Project) {
 this.projectId = project.id
 this.projectService.getOne(project).subscribe(project => {
   this.project = project
   this.loading = false
   //console.log(project.attributes);
   const attributesGroups = project.attributes.map(attribute => ({
     name: attribute.name,
     value: attribute.value,
     descr: attribute.descr,
     attribute_id: attribute.attribute_id,
   }));
   this.form = this.fb.group({
     name: project.name,
     descr: project.descr,
     attributes: this.fb.array(attributesGroups)
   });
   //console.log(this.form);
   consoleconsole.log(this.form.get('attributes')['controls'])

 });

 this.modal.open()
 MaterialService.updateTextInputs()
}
источник

М

Максим in Angular - русскоговорящее сообщество
Eugene
[formGroup]="attribute" подправил, попробуйте еще так
ERROR Error: Cannot find control with name: 'name'
источник

VS

Vladimir Stempel 👁🍵... in Angular - русскоговорящее сообщество
источник

VS

Vladimir Stempel 👁🍵... in Angular - русскоговорящее сообщество
Максим
<input type="text" formControlName="name" [id]="'elem_'+attributeattribute.value.attribute_id" [value]="[attributeattribute.value.value]"/>

сюда ругается
та убери же ты value))
источник

М

Максим in Angular - русскоговорящее сообщество
он тогда object Object сунет
источник

VS

Vladimir Stempel 👁🍵... in Angular - русскоговорящее сообщество
ну так правильно
источник

М

Максим in Angular - русскоговорящее сообщество
у меня ж массив объектов
источник

М

Максим in Angular - русскоговорящее сообщество
в инпуте - value
а заголовке name
источник

VS

Vladimir Stempel 👁🍵... in Angular - русскоговорящее сообщество
скопируй и тупо замени
<div *ngFor="let attribute of form.get('attributes')['controls']; let i=index" [formGroup]="attribute">
 <div class="input-field">
   <input type="text" [formControl]="attribute.get('name')" [id]="'elem_'+attribute.value.attribute_id" />
   <label [for]="'elem_'+attribute.value.attribute_id">{{attribute.value.name}}</label>
 </div>
</div>
источник

М

Максим in Angular - русскоговорящее сообщество
Думаешь сработало?)
источник

VS

Vladimir Stempel 👁🍵... in Angular - русскоговорящее сообщество
должно)
источник

М

Максим in Angular - русскоговорящее сообщество
ERROR Error: Cannot find control with unspecified name attribute

и ничего не подставилось
источник

М

Максим in Angular - русскоговорящее сообщество
источник

М

Максим in Angular - русскоговорящее сообщество
так хоть значения подставляются, но ошибки все равно есть
источник

VS

Vladimir Stempel 👁🍵... in Angular - русскоговорящее сообщество
во, нашел где ошибка


 onSelectProject() {
   this.getOne().subscribe(project => {
     console.log(project.attributes);
     const attributesGroups = project.attributes.map(attribute =>
       this.fb.group({ // <—-
         name: attribute.name,
         value: attribute.val,
         attribute_id: attribute.attribute_id
       })
     );
     this.form = this.fb.group({
       name: [project.name, []],
       descr: [project.descr, []],
       attributes: this.fb.array(attributesGroups)
     });
     console.log(this.form);
   });
 }
источник

VS

Vladimir Stempel 👁🍵... in Angular - русскоговорящее сообщество
и вот так
<div
   *ngFor="let attribute of form.get('attributes')['controls']; let i=index"
   [formGroup]="attribute"
 >
   <div class="input-field">
     <input
       type="text"
       formControlName="name"
       [id]="'elem_'+attribute.value.attribute_id"
     />
     <label [for]="'elem_'+attribute.value.attribute_id"
       >{{attribute.value.name}}</label
     >
   </div>
 </div>
источник

М

Максим in Angular - русскоговорящее сообщество
опа, ошибок нет)
источник

М

Максим in Angular - русскоговорящее сообщество
казалось бы) в такой мелочи парились
источник