有什么更好的方式在组件之间进行通信?

时间:2018-11-16 02:53:42

标签: angular dart angular-dart

我一直在寻找在dart-angle应用程序中的组件之间发送消息的最佳方法是什么,我感到很困惑。我发现在旧版本中,我将使用ScopeAware,如以下问题所示:Angular Dart component events,但现在已将其替换为Streams。

在我看来,ScopeAware创建了一种“全局”方式来管理不直接相关的组件之间的事件,对吗?使用流,如何创建此上下文?

我有以下代码可用于处理“全局”事件:

class PostEvent {


  final StreamController<ComponentEvent> _onEventStream = new StreamController.broadcast();
  Stream<ComponentEvent> onEventStream = null;

  static final PostEvent _singleton = new PostEvent._internal(); 

  factory PostEvent() {
       return _singleton;
  }

  PostEvent._internal() {
       onEventStream = _onEventStream.stream;
  }

  onEvent(ComponentEvent event) {
    _onEventStream.add(event);
  }  

}

在我的项目中,我具有以下组件结构:

Home
  -> Products
    -> Product Item 
  -> Header
    -> Cart Products Count

添加或删除一种产品时,应通知“购物车计数”。在这种情况下,我的代码是个好主意吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用流是一个好主意。 现在,将该类作为服务,在根注入器处提供它,然后将其注入到您希望获得有关更新的通知并在此订阅的位置。

有多个订阅者需要多播流。