向模型添加元素

时间:2019-06-19 07:37:51

标签: angular typescript

我正在尝试在模型中添加一些元素。我不知道Angular的工作原理,所以我尝试.add

型号

export class Profile {
  id: number;
  nombre: descripcion;
}

TS

 perfilesTodos: Profile[];
 response["body"].forEach((index: number) => {
        if (response["body"] == 1) {
          this.perfilesTodos.push(index, "Arson");
        } else if (response["body"] == 2) {
          this.perfilesTodos.push(index, "Administrador de entidad");
        } else if (response["body"] == 3) {
          this.perfilesTodos.push(index, "Administrador de grupo");
        } else if (response["body"] == 4) {
          this.perfilesTodos.push(index, "Gestor");
        } else if (response["body"] == 5) {
          this.perfilesTodos.push(index, "Instalador");
        }
      });

返回

  

无法将类型为“ number”的参数分配给类型为的参数   “个人资料”

有人知道如何使用模型在数组中添加元素吗?

2 个答案:

答案 0 :(得分:0)

您需要推送Profile类 shape 的对象库或peofile类的实例

 perfilesTodos: Profile[] = []; // ? array default value

 response["body"].forEach((index: number) => {
        if (response["body"] == 1) {
          this.perfilesTodos.push({ id: index, nombre : "Arson");
        } else if (response["body"] == 2) {
          this.perfilesTodos.push({ id: index, nombre :"Administrador de entidad"});
        } else if (response["body"] == 3) {
          this.perfilesTodos.push({ id : index, nombre : "Administrador de grupo" });
        } else if (response["body"] == 4) {
          this.perfilesTodos.push({ id :index, nombre :"Gestor"});
        } else if (response["body"] == 5) {
          this.perfilesTodos.push({ id: index, nombre  :"Instalador"});
        }
      })
  

当您将perfilesTodos标记为配置文件数组时,这表示所有数组   项目必须是该类型形状的基础,因此您需要推动道德   轮廓类或对象具有相同的属性

答案 1 :(得分:0)

理解push接受varargs参数无疑会有所帮助。因此,下面的代码(就像您在代码中所做的那样)会将许多元素推送到列表中:

list.push(1,2,3,4,5);

所以您需要做的是向配置文件列表中添加Profile

this.perfilesTodos.push({ id: index, nombre : "Arson"});

现在要省略所有这些if else语句,就可以创建一个简单的字符串数组

const data: string[] = ['Arson', 'Administrador de entidad', 'Administrador de grupo', 'Gestor', 'Instalador']

除掉其他所有内容,然后简单地进行

perfilesTodos: Profile[] = [];
response["body"].forEach((id: number) => {
    this.perfilesTodos.push({id, nombre: data[ response["body"] - 1 ]});
});

当然,您还必须更改nombre的类型,因为没有description这样的东西-它是字符串。


看起来仍然很奇怪的是,您首先循环使用`response ['body'],因为它是一个数组,然后尝试对一个数字进行相等性检查...