2016-07-15 10 views
1

plunkは、親コンポーネントと子コンポーネントが1つの非常に単純なページを示しています。親から子まで、2つの値を渡します。そのうちの1つはstringであり、もう1つは配列です。子要素から親要素への文字列フィールドのバインドが正しくありません。

<child [aList]="sharedList" [aString]="sharedString"></child> 

問題は、子コンポーネントでのみ更新されるが、親では更新されない文字列値を更新するときです。しかし、子コンポーネントから配列の値を更新すると、両方(子と親)で更新されます。

だから私の質問はなぜ文字列値が子から親で更新されていないが、配列値はそうです。私は間違っている。

答えて

2

JavaScriptのプリミティブタイプ(文字列、数字など)は、は変更不可能です。オブジェクト(配列、オブジェクト、関数などの複雑な型)は変更可能であり、参照渡しされます。つまり、親から子への文字列を渡すときには、コピーの値、つまり別の文字列を渡すことになります。

子のプリミティブ値を後で変更すると、元の親が保持するものは自動的に更新されません。

一方、オブジェクト(配列など)を渡すと、親と子の両方が同じオブジェクトへの参照を扱うことになります。変更は別のものに反映されます。

+0

お返事ありがとうございます。私は、単純なJavaScriptのビューから、最初の角度では、このようなものを書くことができることを認識しています。 ''この値を指令で変更すると、コントローラが変更されます。おそらく間違った質問をするかもしれませんが、私の本当の疑問はAngular 2でこれをどのように実装するかということです。 – GrumpySeal

関連する問題