【问题标题】:how to share service in angular如何以角度共享服务
【发布时间】:2020-01-29 21:09:12
【问题描述】:

我有一个带有不同模块的角度应用程序。模块是延迟加载的。假设在模块 A 中,我有一个服务 userService,我想在模块 B 的组件中使用它,比如说 library.component。所以我有这个代码:

A.module.ts:

@NgModule({
  declarations: [...],
  imports: [...],
  providers: [UserService]
})
export class UserModule { }

在 library.component.ts 我有这个导入 import {UserService} from ...

我的目录结构如下:

--moduleA
  --service
    --user.service.ts
  A.module.ts
--moduleB
  --component
    --library.component.ts

我想知道的是,知道模块 A 和 B 是延迟加载的,从 B 中的 A 导入服务是一种不好的做法吗?

我应该移动我在模块 B 中的服务中使用的 userService 的功能,还是定义一个共享模块。

提前感谢您的回复。

【问题讨论】:

    标签: angular


    【解决方案1】:

    这是一个取决于构建架构的个人的场景,我会这样做:

    要点1:当我没有很多方法时,我会使用您使用的方式,因为当我们访问服务时查看闭包时,它会创建所有可用方法的原型如果你只有 3 - 4 种方法,那也没关系

    Point2:如果我们有 100 种方法,并且不建议在我们的模块中只为单一方法调用该服务,我更愿意在这种情况下使用共享模块。

    这完全取决于您设计的架构:)

    【讨论】:

      【解决方案2】:

      您的问题的一个解决方案是

      @Injectable({ providedIn: 'root' })

      将this添加到服务后,可以在其他服务的构造函数中调用该服务 constructor(private service: Service) { }

      https://angular.io/guide/dependency-injection解释过

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-07
        • 1970-01-01
        • 2020-11-29
        • 2018-01-04
        相关资源
        最近更新 更多