2016-11-16 73 views
0

模塊A角2依賴注入與共享組件

declarations: [myComponent] 
providers: [myServiceA] 

模塊B

declarations: [myComponent] 
providers: [myServiceB] 

myComponent的由模塊A的共享和B

class myComponent { 
    constructor(?) {} 
} 

myServiceA和myServiceB共享相同的API。這個想法是,myServiceA在本地存儲數據(可以說localstorage) 和myServiceB將數據存儲在遠程服務器上(可以說Firebase)。

如何根據加載組件的模塊注入正確的myService?

+0

這可能會工作,如果你讓模塊懶加載。否則我認爲這很困難。 –

回答

0

我想通了,如何做到這一點:

  1. 創建myServiceA抽象類和myServiceB暴露通過這兩種服務使用相同的API。

    class abstract ParentClass { 
    someFunc: (arg: string) => any; 
    } 
    
    class myServiceA implements ParenClass { 
    // myServiceA implementation for someFunc 
    } 
    
    class myServiceB implement ParentClass { 
    // myServiceB implementation for someFunc 
    } 
    
  2. 注入組件中的父類。

    class myComponent { 
        constructor(service: ParentService) {} 
    } 
    
  3. 在模塊A添加不同的供應商和B

模塊A

declarations: [myComponent] 
providers: [ { provide: ParentService, useClass: myServiceA } ] 

模塊B

declarations: [myComponent] 
providers: [ { provide: ParentService, useClass: myServiceB } ]