Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 订阅角度服务中的观测值_Angular_Architecture_Flux - Fatal编程技术网

Angular 订阅角度服务中的观测值

Angular 订阅角度服务中的观测值,angular,architecture,flux,Angular,Architecture,Flux,我在Angular从事一个中等规模的项目。我有一些建筑方面的疑问: 来到一个项目中,我决定创建一个具有四层的体系结构。 第一层是数据存储服务层,它是 数据。它们都可以调用某种API抽象,然后 他们将数据存储在公共可观测数据中,并通过 私人行为主体 第二层是组件式立面 从公共存储中获取数据然后使用的服务 用于协调智能组件流的沙盒模式 在它下面 第三层是智能组件层,基本上 协调来自哑组件的回调,并与 它自己的外观知道“全局”数据上下文 第四层是一个哑组件,它只知道自己的输入和输出 例如

我在Angular从事一个中等规模的项目。我有一些建筑方面的疑问:

  • 来到一个项目中,我决定创建一个具有四层的体系结构。
    • 第一层是数据存储服务层,它是 数据。它们都可以调用某种API抽象,然后 他们将数据存储在公共可观测数据中,并通过 私人行为主体

    • 第二层是组件式立面 从公共存储中获取数据然后使用的服务 用于协调智能组件流的沙盒模式 在它下面

    • 第三层是智能组件层,基本上 协调来自哑组件的回调,并与 它自己的外观知道“全局”数据上下文

    • 第四层是一个哑组件,它只知道自己的输入和输出

  • 例如:

    /data-stores:
     - user-hub.service.ts
     - user.service.ts
    /pages:
     - user-profile-container.component.ts (smart-ass)
     - user-profile-container.service.ts (sandbox-facade that knows about data-stores)
    /components:
     - bunch of dumb components that are unique in this module that only knows about user-profile-container
    
  • 我的智能组件只获得一个流,我在任何地方都使用异步管道
  • 所有数据都在facade中进行管理,然后在业务流中经过某种检查点后保存在数据存储中,以改善用户体验
  • 我对我的想法的怀疑是,当我在数据存储层上实现user-hub.service(websocket)时。为了发送数据更改,我不得不在某个地方订阅回调。例如,其他人在社区应用程序中接受了好友请求,我们希望它显示在用户配置文件对象中的好友列表中。当有人点击API上的accept端点时,我会通过websocket将信息发送给另一个人。由于data store应该是数据的唯一所有者,因此我认为应该在user-service.ts中订阅回调

    我基本上在user-hub.service中创建了一个可观察的friendRequestAccepted$,并在user.service.ts的构造函数中订阅了它

    因此,最后的问题是:

  • 我听说订阅服务被认为是一种不好的做法。但在我的体系结构中,我认为我不应该订阅智能组件中的websocket回调,因为它不是数据所有者。我还认为,在应用程序的任何数据存储中订阅某种全局事件来刷新所有数据可能会很有用。我是否应该在我的服务中订阅WebCoket回调?为什么?

  • 我不能在我的服务中使用ngOnInit,我听说在构造函数中订阅被认为是不好的做法。那么,如果订阅服务还不错,我应该订阅服务的哪一部分?正如我所读到的,构造函数应该只是一个数据赋值方法,而不是回调寄存器方法

  • 谢谢你的建议,我是初学者