将数组添加到角度打字稿中的对象数组中

时间:2019-10-19 12:44:07

标签: angular typescript

我正在尝试将字符串数组推入对象数组-> Accessright[];

selectedAccessRights: String[];
accessRights: Accessright[];


for (var i = 0; i < this.numOfPages; i++) {
  this.selectedAccessRights.push(this.selectedPages[i].entityName);
  //I have tried to the following as well, but it doesn't add everything to the accessRights object. Only the last element
  //this.accessRights[i].entityName = this.selectedPages[i].entityName;
}

this.accessRights = this.accessRights.push(this.selectedAccessRights);

但是上面一行给我一个错误

  

类型'String[]'的参数不能分配给类型的参数   'Accessright'。类型“ String[]”缺少以下属性   类型'Accessright'中的内容:accessRightIdentityNameentityAttribute

也尝试从其他帖子中添加和插入,但对我不起作用。

说实话,调试了这么长时间。如果有人可以看看,将不胜感激。

更新:

38: //Accessright response format
accessGroup: {accessGroupId: 1, accessGroupName: "AdminGroup", accessRights: Array(0), staffs: Array(0)}
accessRightId: 39
entityAttribute: ["charts"]
entityName: "EditDashboard"
__proto__: Object


39: Array(12) //My array
0:
accessRightId: 0
entityName: "Staff"
isDisabled: undefined
1:
accessRightId: 1
entityName: "AccessGroup"
isDisabled: undefined
__proto__: Object

尝试了any []方法,但是由于我的Web服务需要访问权限对象,所以该方法不起作用。

3 个答案:

答案 0 :(得分:1)

selectedAccessRights: string;
accessRights: any = [];

   for (var i = 0; i < this.numOfPages; i++) {

       this.selectedAccessRights = this.selectedPages[i].entityName;
       this.accessRights = this.accessRights.push(this.selectedAccessRights);

     }

答案 1 :(得分:1)

array的push方法在完成push后返回数组的长度,因此其所有首位不返回string []。同样,当您将值推入数组时,它会将其添加到该数组中。 因此,更改this.accessRights = this.accessRights.push(this.selectedAccessRights);

this.accessRights.push(this.selectedAccessRights);

请参阅以下链接,详细了解推送方法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

答案 2 :(得分:0)

更新:

我决定更改后端以接收字符串元素数组。

比将字符串数组插入对象然后将其发送到后端要容易得多。