2016-02-05 41 views
0

注入現有模型的層次結構類,具有角2個服務有了這樣一個模型層次:如何通過DI

export class A { 
    constructor() { 
     // Here service X is needed for some own functions 
    } 
} 

export class B extends A { 
    constructor() { 
     // Here service Y is needed for some own functions 
     super(...) 
    } 
} 

export class C extends B { 
    constructor(parent, data) { 
     super(...) 
    } 
} 

我想實例C對象。所以問題是:

我該如何注入XY服務?

  • 我應該把所有的人都在C構造函數,並傳遞給基類與super
  • 它們可以與已有的參數parentdata混合嗎?
  • 有一些方法我可以只在B級別注入Y級別,X級別在A級別?所以不知何故,我避免在super上傳遞這些參考?

回答

1
export class A { 
    constructor(serviceX: ServiceX) { 
    // Here service X is needed for some own functions 
    this.serviceX = serviceX; 
    } 
} 

export class B extends A { 
    constructor(serviceX: ServiceX, private _serviceY: ServiceY) { 
    // Here service Y is needed for some own functions 
    super(serviceX); 
    this.servicxY = serviceY; 
    } 
} 

export class C extends B { 
    constructor(serviceX: ServiceX, serviceY: ServiceY) { 
    super(_serviceX, serviceY); 
    } 
} 

又見Angular2 access global service without including it in every constructor