【问题标题】:Global/Common Methods Constants Services throughout whole App angular2整个应用程序中的全局/通用方法常量服务 angular2
【发布时间】:2016-02-05 18:18:12
【问题描述】:

经过一天的搜索,我一无所获!

我在单独的文件中编写了一些方法(也可以说是服务),然后我必须在整个 angular2 应用程序中使用这些方法。我知道如果我们在引导时导入该文件,我们就可以在整个应用程序中使用这些方法。但我的问题是如果我需要两个以上的全局文件怎么办。我是否必须在每个组件的构造函数中导入所有文件(需要哪些组件服务)?还是有其他替代品?

例如,我有一个名为 GlobalService.ts 的文件。

export clas xyz{
 constructor(private base_path_service: GlobalService){
   //stuff...
    }
}

Q1:- 是否有任何替代方法可以避免在构造函数中每次都初始化 GlobalService ?

Q2:- 在服务注入时使用@injectable@inject 有什么好处?

第三季度:-

export clas xyz{
 constructor(private base_path_service: GlobalService){
   //stuff...
    }
}

class xyz{
  constructor(@Inject(GlobalService) GlobalService: globalService) {
      //stuff....
  }
}

哪一个最好,为什么?

【问题讨论】:

    标签: dependency-injection typescript angular


    【解决方案1】:

    Q1:没有明智的选择。

    Q2:@Injectable() 必须添加到具有构造函数参数的服务中,否则 Angulars DI 无法创建实例。

    @Inject(GlobalService) 是多余的。 @Inject() 有一些特殊功能很有帮助,如此处所示 https://stackoverflow.com/a/35217704/217408

    Q3:第一个例子。请参阅第二季度。

    【讨论】:

    • 但我不想将我的全局服务放入要使用该服务的组件的构造函数中,然后呢?
    • 我可能误解了“在每个组件的构造函数中导入所有文件”中的“导入”。您可以做的是创建一项服务 (globalService),就像您提到的那样,它提供对所有其他服务的访问。这样你只需要在构造函数中注入这个服务(仍然无处不在)并调用像this.globalService.specialService.doSomething()这样的函数。除了通过构造函数之外,没有其他可行的方法来获取全局实例。这有什么问题?
    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2016-10-18
    相关资源
    最近更新 更多