Angular 强制刷新父组件

Angular 强制刷新父组件,angular,Angular,我正在Angular 2中使用一个小型数据网格,我有一个关于组件之间的父/子关系的问题。我有两个组件:appdatagrid和appadditem。datagrid组件在其HTML中包括app add item组件,该组件由一个按钮和一个模态组成。单击时,该按钮将显示带有表单的模式,以创建新项 所有的逻辑都是独立的,非常好:appadditem组件创建并处理表单,将表单数据发送到服务,并创建一个新项目。但是,在datagrid的子组件完成添加新项后,如何更新datagrid app datagr

我正在Angular 2中使用一个小型数据网格,我有一个关于组件之间的父/子关系的问题。我有两个组件:
appdatagrid
appadditem
。datagrid组件在其HTML中包括
app add item
组件,该组件由一个按钮和一个模态组成。单击时,该按钮将显示带有表单的模式,以创建新项

所有的逻辑都是独立的,非常好:
appadditem
组件创建并处理表单,将表单数据发送到服务,并创建一个新项目。但是,在datagrid的子组件完成添加新项后,如何更新datagrid


app datagrid
组件是否应该侦听事件?是否应将其作为依赖项传递给子级?这样做的正确方法是什么?

我认为您可以让
应用程序添加项
组件发出一个
@Output
事件来指示已添加项。然后将
app datagrid
绑定到该事件,如下所示:

<app-data-grid #dataGrid>
..
   <app-add-item (itemAdded)="dataGrid.addNewItem($event)"></app-add-item>
..
</app-data-grid>

..
..

这不是在两者之间增加了一个相当直接的依赖关系吗?它们不应该被隔离吗?我的意思是:为什么添加项组件需要知道datagrid组件期望从中得到什么?添加项组件不知道datagrid期望得到什么-它只提供一个输出事件,指示已经添加了什么。您可以将多个操作绑定到该事件-例如,向网格中添加行、显示消息等。这些操作都没有在“添加项”组件中定义。组件有几种通信方式,但这是最简单的(至少对我来说)满足您的要求。的文档在“父侦听子事件”部分中对此进行了描述。