在我的Angular 6应用程序中,我有应修改组件属性的方法。我的意思是:
...
value: number = 10;
changeValue(v) { return v = 100; }
...
我使用组件的属性调用此方法:
this.changeValue(this.value); // didn't modify this.value
,我希望this.value
等于100,但仍等于10。同时,我知道我可以读取v
参数(this.value
就我而言)在该函数的内部,但我无法对其进行修改。
我在做错什么,如何实现所需的行为? 您能给我看看解决这个问题的正确方向吗? 我将不胜感激。
答案 0 :(得分:0)
在Typescript中,基元(字符串,数字,布尔值等)按值传递。因此,您可以(至少)做两件事
您可以将方法的返回值分配给value
变量
changeValue(){
return 100;
}
this.value = this.changeValue();
或者您可以这样做:
changeValue(){
this.value = 100;
}
this.changeValue();
更新
正如评论中的Jeto所述,即使您传递的是对象而不是原始对象,结果也不会改变,因为您是分配给对象本身而不是对象的属性。
value = {foo: 'bar'}
changeValue(v){
return v = {foo: 'baz'};
}
console.log(this.value); // {foo: 'bar'}
this.changeValue(this.value);
console.log(this.value); // {foo: 'bar'} #Unchanged
但是,如果您想更改其属性而不是对象本身,它将起作用
value = {foo: 'bar'}
changeValue(v){
v.foo = 'baz'
}
console.log(this.value); // {foo: 'bar'}
this.changeValue(this.value);
console.log(this.value); // {foo: 'baz'} #Changed