发布节点名称的方式已从子路径组件

时间:2018-04-10 18:51:09

标签: angular rxjs angular5

我有以下内容:

TreeViewComponent,显示节点树。单击节点时,节点详细信息将在子路由器插座中打开(因此我可以同时看到树和详细信息)。在这里,用户可以更改节点详细信息的详细信息。

在详细信息视图中,用户可以更改节点的名称,以及其他详细信息。

这开辟了两个我想解决的问题。

  • 排序,在节点在服务器上排序之前,但如果名称更改,我需要求助于项目。我已经读过这可能是一个问题以及为什么Angular开发者已经删除了排序管道。建议在组件中进行排序。
  • 更新所选节点的节点名称。

我有一些想法,但想以最好的方式去做。

  • 对于排序......我可以从服务器上获取节点树,但这也需要我发布某种事件。

  • 在树中选择节点时,将其放入服务中。让树细节组件更新它...不确定这是否正确。另外......不确定它是否适用于变化检测策略。 (新的角度)

我四处寻找并找到了这个:How to subscribe to an event on a service in Angular2? - 这是要走的路吗?它对我来说仍然有点抽象......但只是想确保我以正确的方式去做。

这是一个我转换为Angular的应用程序,为了让我们应该改变的团队的其他人感到高兴......在VueJS中我们有一个VuexStore,这很容易搞得很乱,也许我们是这样做是错误的。但我真的很喜欢Angular,因为大多数事情都有指导方针。如何构建和创建应用程序。纯洁的爱......

如果需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

将信息从子组件传递到父组件的正确方法是events

因此,对于您的第二点:当您的节点名称发生更改时,您的子组件会发出一个事件。

Output() nodeChange: EventEmitter = new EventEmitter();
onNodeChange() {
  this.nodeChange.emit('...data you want to pass to the parent...')
}

您的父组件只需要听取这些事件。 在HTML中:

<my-child-component (nodeChange)="renameNode(...your data...)"></my-child-component>

在课堂上:

renameNode(data) {
  ... do something
}

This是一个非常好的详细解答,解释了如何处理Angular中的事件。

回到第一点,是的,Angular团队删除了sorting管道,因为它被认为非常低效。解决方案是在更新节点时再次在组件中对树进行排序。你究竟是怎么做的取决于你,并依赖于实施的细节。