如何通过复选框发布对象数组

问题描述 投票:1回答:2

我正在尝试初始化一个对象类型属性复选框的数组,但它不起作用。 (对不起,我的英语不好)

楷模

资产

import {TypeActif} from './model.type-actif';
import {CritereActif} from './model.critere-actif';

export class Actif{
  ref: string;
  nom: string = '';
  type_actif: TypeActif = new TypeActif();
  lesCriteresActifs: Array<CritereActif> = new Array<CritereActif>();
}

CritereActif

import {Actif} from './model.actif';
import {LesCriteres} from './model.les-criteres';
import {LesValeurs} from './model.les-valeurs';

export class CritereActif{
  id: number;
  actif: Actif = new Actif();
  critere: LesCriteres = new LesCriteres();
  valeur: LesValeurs = new LesValeurs();
}

LesCriteres

export class LesCriteres{
  code: string = null;
  nom: string = '';
}

actif.component.html

<div class="form-group">
    <label>Critères : </label>&nbsp;
    <div class="checkbox-inline" *ngFor="let l of lesCriteres; let i= index">
      <label>
        <input type="checkbox" [value]="l.code" [(ngModel)]="actif.lesCriteresActifs[i].critere.code">{{l.code}}
      </label>
    </div>
</div>

我想在表“lesCritesActifs”中添加用户将检查的“lesCriteres”的每个元素。

在我加入该行之前,一切正常:

[(ngModel)]="actif.lesCriteresActifs[i].critere.code"

我在Web开发控制台中遇到此错误:

ERROR TypeError: "_co.actif.lesCriteresActifs[_v.context.index] is undefined"

谢谢 !

angular spring typescript checkbox ngfor
2个回答
0
投票

我看到的是你有一个必须初始化的CritereActif数组。如果您知道大小,可以使用for循环,例如:

for (let i = 0; i<lesCriteresActifs.length; i++){
    let aCritereActif = new CritereActif();
    lesCriteresActifs.push(aCritereActif);  
}

之后,您可以在程序[(ngModel)]="actif.lesCriteresActifs[i].critere.code"中编写时访问数组的每个成员。


1
投票

问题是你的lesCriteresActifs是空的,你试图访问.lesCriteresActifs[_v.context.index]的一个索引,那就是为什么未定义,你不能访问.critere.code

部分解决方案可能是

[(ngModel)]="actif.lesCriteresActifs[i]?.critere.code"
© www.soinside.com 2019 - 2024. All rights reserved.