我正在尝试将字符串数组推入对象数组-> 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
'中的内容:accessRightId
,entityName
,entityAttribute
也尝试从其他帖子中添加和插入,但对我不起作用。
说实话,调试了这么长时间。如果有人可以看看,将不胜感激。
更新:
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服务需要访问权限对象,所以该方法不起作用。
答案 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)
更新:
我决定更改后端以接收字符串元素数组。
比将字符串数组插入对象然后将其发送到后端要容易得多。