想象一下,我有两个组件Parent
和Child
。 Child
用于收集Parent
以后需要的用户输入。
现在我正在考虑两种方法来实现这一目标:
选项 1:
<child-component [data]="childData" (done)="onDone()"></child-component>
父级基本上childData = {}
传递给Child
。 Child
将东西写入data
使其在Parent
的childData
中可用,并在完成后发出done
。
选项 2:
<child-component (done)="onDone(data)"></child-component>
完成后,Child
发出done
和相应的数据。
恕我直言,选项 2 似乎更好地遵循 Angular2 的概念,但选项 1 立即提供数据。你会考虑选项 1 的不良做法吗?
还有我没有想到的另一种选择吗?
要真正成为独立的组件,父组件不应该对完成做出反应,完成应该对父级监视的dataModel做一些事情,并且由于触发了更新而做出反应。
对我来说,这是实现父子关系的更简洁的方式。原因是当孩子改变时,每个使用子项的父母都需要了解所做的已经更改,但是如果完成发生在子项内部并且父母可以从父项和子项共同的另一个来源解释它,则父项和子项都是松散耦合的。
在这种情况下,这是一个选择问题,您的选项和我的选项都应该可以解决问题,这取决于您正在构建的应用程序类型,如果您正在构建轻量级应用程序,您可以使用任何模型,但是随着应用程序变大,这些父子依赖项会回来咬我们。