我可以在Angular 6中使用组件的属性作为方法的参数吗?

时间:2018-12-22 20:22:50

标签: angular typescript

在我的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就我而言)在该函数的内部,但我无法对其进行修改。

我在做错什么,如何实现所需的行为? 您能给我看看解决这个问题的正确方向吗? 我将不胜感激。

1 个答案:

答案 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