提问人:claudioz 提问时间:9/10/2017 更新时间:2/21/2023 访问量:7957
带有 TypeScript 的 Angular 4:通过引用传递参数
Angular 4 with TypeScript: passing parameters by reference
问:
我刚刚开始使用 TypeScript 语言使用 angular 4 开发一个 Web 应用程序。 我的问题是:如果我使用类中数据字段的值初始化字符串变量,则该值似乎是用于复制而不是引用的。
有没有办法传递参数以供参考?
例:
export class MyObject {
string1: string;
string2: string;
}
export class MyClass {
myString: string;
object: MyObject;
array[]: MyObject[];
constructor() {
this.array = [{
string1: this.myString;
string2: this.myString;
}];
}
}
如果我尝试更改字段的值,然后在我的 HTML 模板中使用字符串插值this.myString
{{myString}}
{{array[0].string1}} {{array[0].string2}}
唯一更改的值是 ,而其他两个值与第一个值相同。这是因为参数的传递似乎是针对值而不是通过引用完成的。myString
myString
对不起,如果这个问题是微不足道的,但我现在正在学习 TypeScript
答:
0赞
Alex Kvitchastyi
9/10/2017
#1
您应该从数组中更改值,例如
<input [(ngModel)]="array[0].string1">
在数组中,myString 的新实例;
0赞
Titian Cernicova-Dragomir
9/10/2017
#2
这通常是变量在 Javascript(以及大多数其他现代编程语言,Java、C# 等)中的工作方式。按引用传递的一种常见方法是创建一个包含字符串的附加对象,并将引用分配给该对象的任何需要的位置。
例如:
export interface MyObject {
string1: Ref;
string2: Ref;
}
export interface Ref {
value: string
}
export class MyClass {
myString: Ref;
array: MyObject[];
constructor() {
this.myString = { value: "old Vlaue"};
this.array = [{
string1: this.myString,
string2: this.myString
}];
this.myString.value = "New Value"
}
}
绑定时,请使用:
{{myString.value}}
{{array[0].string1.value}} {{array[0].string2.value}}
评论
0赞
claudioz
9/10/2017
如果我使用包装对象 String 作为原始类型字符串的替代品,一切都会正常工作吗?
0赞
Titian Cernicova-Dragomir
9/10/2017
如果您在需要字符串值的任何地方使用,我希望它应该。但你应该测试一下。prop.value
0赞
claudioz
9/10/2017
我不明白
0赞
Titian Cernicova-Dragomir
9/10/2017
例如,如果有,则 var 将不起作用。您需要使用 .一般来说,在你需要值的任何地方,你不仅需要使用var myObject = { string1: { value: 'x' }, string2: { value:'y' } }
d = myObject.string1 + myObject.string2
d = myObject.string1.value + myObject.string2.value
prop.value
prop
评论
this.myString
array
this.myString