【发布时间】:2018-07-11 22:50:12
【问题描述】:
假设我有一个组件,它接收 Foo 实例并显示一个表单来编辑它。
export class ChildComponent implements OnInit {
@Input() foo : Foo;
@Output() onChange : EventEmitter<Foo> = new EvenEmitter<Foo>();
constructor() {
}
ngOnInit() {
}
}
我将 ChildComponent 嵌套在 ParentComponent 中。
<div id="parent">
<app-child-component [foo]="parentFoo"></app-child-component>
</div>
现在即使我在这里使用了单向绑定,因为foo 是一个对象,因此通过引用传递,在ChildComponent 中对其所做的任何更改也会反映在ParentComponent 中。
如何防止这种情况发生?有没有办法通过价值传递?有什么最佳做法吗?
【问题讨论】:
-
不能传值,但是可以在ngInit中对foo对象做deepcopy,然后将新对象引入到html中...about the deep copy
-
我知道如何在 javascript 中对对象进行深度复制,而且我也知道对象是通过 javascript 中的引用传递的,这与角度无关。但是,我认为可能有一种角度特定的方式来处理这个问题,因为我确信我不是第一个遇到这个问题的人。
-
您好 - 如果答案回答了您的问题,请考虑将其标记为已接受;如果您认为它有帮助,请考虑将其标记为已接受,以便其他人知道您的问题已得到解答/答案是否对您有用。如果您不觉得我的回答回答了您的问题/没有帮助,请不要担心,只是想让您了解该功能。欢迎来到 SO :)
标签: javascript angular typescript parameter-passing pass-by-value