Typescript 是否更新数组中基于模型的对象的所有实例的成员值?
我很喜欢学习Angular2+Typescript,并且想知道是否有一种方法可以非常简单地更新数组中所有基于模型的对象的特定成员的所有值(例如,一行) 例如,假设您有此模型:Typescript 是否更新数组中基于模型的对象的所有实例的成员值?,typescript,angular,Typescript,Angular,我很喜欢学习Angular2+Typescript,并且想知道是否有一种方法可以非常简单地更新数组中所有基于模型的对象的特定成员的所有值(例如,一行) 例如,假设您有此模型: export class x1Model{ status:string = ""; isAssigned:boolean = false; isDefault:boolean = false; isRequested:boolean = false; constructor(pub
export class x1Model{
status:string = "";
isAssigned:boolean = false;
isDefault:boolean = false;
isRequested:boolean = false;
constructor(public label:string = ""){}
toggle():void{
this.isDefault = !this.isDefault
}
}
你有这个服务:
export class x1Service{
x1s = [
new x1Model("Orange Racer"),
new x1Model("Wife's Sunday Driver"),
new x1Model("Weekend Bucket")
];
addX1(x1:x1Model){
this.x1s = [...this.x1s, x1];
}
toggleDefault(x1:x1Model){
//get index of x1 to set as default
const x = this.x1s.indexOf(x1);
//set all as default=false
set(item.default,false,this.x1s);
//toggle passed x1 as default
x1.toggle();
//update global list
this.x1s = [
...this.x1s.slice(0,x),
x1,
...this.x1s.slice(x+1)
];
}
}
所以我想知道的是,是否有一个巧妙的方法来做我所展示的事情
set("a model's variable", "the new value", "the list of objects of Model type");
无需编写“set”函数
我只是认为,如果模型概念能够或被扩展为允许一种快速方式,针对任意数量的模型类型的对象传递模型的一个或多个变量的覆盖/更新/屏蔽版本,并进行更新,那将是一件好事。使用
forEach相当简单。
:
this.x1s.forEach(x1 => x1.default = false);
它比魔法
set
函数读起来更好 你可以给你想要公开访问的类成员一个公共访问器。谢谢,这是我将要得到的,看起来很接近。我认为如果我能传递一个函数一个掩蔽模型,对于传递的模型中的每个k-v对,它将适当地覆盖传递的数组中的每个对象,那将是非常棒的。作为一个嵌套的foreach,我已经可以实现这一点,但是考虑Angular2,下一步将是使掩蔽模型可见,并且能够让活动模型订阅特定的掩蔽模型。可以想象,这将允许触发所有订阅对象的事件由单个掩码操纵。我相信这是可能的。