0

有一种情况是数据是从两个不同的组件发送的;假设OneComponent并且TwoComponent有一个ResultComponent通过Input()装饰器接收这些数据。此外,在ResultComponent数据中使用OnChanges接口合并:

  ngOnChanges(changes: SimpleChanges) {
    if (changes['dataFromCompTwo']) {
      this.dataFromComp = this.dataFromCompTwo;
    }
  }

和数据显示在这个组件中,但组件被实例化了两次,数据是双倍的。如何检查数据是否已从其中一个组件发送并仅显示最后发送的数据?

STACKBLITZ => 我想只显示一次结果

4

2 回答 2

1

这是组件间的通信。您应该使用此 Angular 文档页面中描述的技术之一。

我个人倾向于通过服务进行通信,因为组件根本不耦合:通信方法不依赖于它们包含在 DOM 中,因此您可以随意移动它们,它不会中断。

于 2018-11-15T13:52:03.763 回答
1

如果您有两个组件发送更改,那么您可以使用以下方法访问它们:

  • 更改.componentOne
  • 更改.componentTwo

SimpleChanges有另一个名为的属性firstChange,您可以使用它来检查这是否是来自特定组件的第一个更改,如下所示:

  • changes.componentOne.firstchange- 这意味着这是组件发送的第一个更改
于 2018-11-15T13:43:56.320 回答