我尝试创建一个函数,我可以使用复选框修改所选角色的布尔值。 这是功能:
changeRole(roleName){
let roleEdit = this.selectedUser.roles.filter(roleEdit => roleEdit.indexOf(roleName) >= 0)[0];
let roleE = {
"title": roleEdit,
"value": false
}
if(roleEdit == roleName){
if(roleE.value == false){
roleE.value = true;
}else{
roleE.value = false;
}
}
}
我在用户模型中使用字符串数组定义了角色:
export class User {
public constructor (
public firstName: string,
public lastName:string,
public roles: string[],
.....
}
pb是我有这个消息,我不知道如何解决它:
错误类型错误:roleEdit.indexOf不是函数
在Array.filter()
有人可以帮助我吗?
这里是selectedUser
对象的内容:
{
"id": "5ac91784295a3c2824b025e3",
"firstName": "yasmin",
"lastName": "yasmin",
"login": "yasmin",
"pwd": "168d3c263aa44687fc3f8e78ad56d869",
"email": "yasmin.yasmin@gmail.com",
"cin": "111111111",
"address": {
"country": "aaaaaa",
"city": "aaaaaaa",
"zipCode": "111111",
"street": "aaaaaaa"
},
"gender": null,
"telephone": "1212121212",
"roles": [{
"title": "employé",
"value": false
}, {
"title": "authorizer",
"value": false
}, {
"title": "validateur",
"value": true
}, {
"title": "admin",
"value": true
}],
"dateTime": "2018-04-07 20:09:55"
}
答案 0 :(得分:0)
所选用户是包含角色数组的对象,因此您可以过滤角色,但元素角色是一个对象,因此您必须匹配标题。希望有所帮助。
let roleEdit = this.selectedUser.roles.filter(role => role.title == roleName);
您可能会获得多个值,因为过滤器返回一个数组,因此您可以检查长度并获得您想要的第一个值。
if(roleEdit.length) {
let roleToEdit = roleEdit[0];
// do stuff
}