从子组件到父组件的绑定字符串字段不起作用
Binding string field from child to parent component not working
示例 plunk 显示了非常简单的页面,其中我们有一个父组件和一个子组件。从父到子我们传递两个值,一个是字符串,另一个是数组。
<child [aList]="sharedList" [aString]="sharedString"></child>
问题是当我更新字符串值时它只在子组件中更新而不是在父组件中更新。但是,如果我从子组件更新数组值,它将在两个(子组件和父组件)中更新。
所以我的问题是为什么字符串值不会在父项中从子项更新,但数组值会更新。我做错了什么。
在 Javascript 中,基本类型(字符串、数字等)是 不可变的。对象(复杂类型,如数组、对象、函数等)是可变的并通过引用传递。这意味着当您将字符串从父项传递给子项时,您实际上传递了值的 copy,即另一个字符串。
当您稍后更改子项中的原始值时,原始的一个父项持有不会自动更新。
同时,当您传递一个对象(如数组)时,父对象和子对象都将使用对同一对象的引用。对一个的更改会反映在另一个中。
示例 plunk 显示了非常简单的页面,其中我们有一个父组件和一个子组件。从父到子我们传递两个值,一个是字符串,另一个是数组。
<child [aList]="sharedList" [aString]="sharedString"></child>
问题是当我更新字符串值时它只在子组件中更新而不是在父组件中更新。但是,如果我从子组件更新数组值,它将在两个(子组件和父组件)中更新。
所以我的问题是为什么字符串值不会在父项中从子项更新,但数组值会更新。我做错了什么。
在 Javascript 中,基本类型(字符串、数字等)是 不可变的。对象(复杂类型,如数组、对象、函数等)是可变的并通过引用传递。这意味着当您将字符串从父项传递给子项时,您实际上传递了值的 copy,即另一个字符串。
当您稍后更改子项中的原始值时,原始的一个父项持有不会自动更新。
同时,当您传递一个对象(如数组)时,父对象和子对象都将使用对同一对象的引用。对一个的更改会反映在另一个中。