2016-02-05 68 views
1

经过一天的搜索没有发现我在找什么!全球/常见方法常数服务贯穿整个应用程序angular2

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

,比如我有文件名为GlobalService.ts。

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

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

Q2: - 什么用@injectable的benifit和@inject而服务注入?

Q3: -

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

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

哪一个是最好的,为什么?

回答

0

Q1:没有理智的选择。

Q2:@Injectable()已被添加到具有构造函数的参数,否则Angulars DI不能创建实例服务。

@Inject(GlobalService)是多余的。有特殊的功能,其中@Inject()有利于像这里显示https://stackoverflow.com/a/35217704/217408

Q3:第一个例子。见Q2。

+0

但我不想把我的全局服务放入要使用该服务的组件的构造函数那么什么? –

+0

我可能误解了“导入每个组件的构造函数中的所有文件”中的“导入”。你可以做的是创建一个像你所提到的服务('globalService'),它提供对所有其他服务的访问。这样你只需要在构造函数中注入这一个服务(仍然在任何地方)并调用像this.globalService.specialService.doSomething()这样的函数。没有可行的其他方式来获取全局实例,而不是通过构造函数。这有什么问题? –