0

有几个类,如何注入TermsExchangeService

import {TermsExchangeService} from './terms-exchange.service';

@injectable()
export class TermsExchangeComponent {
  constructor(
        private termsExchangeService: TermsExchangeService
    ) {}
}

import {TermsExchangeService} from './terms-exchange.service';

@injectable()
export class PurchaseMainComponent {
    constructor(
       private termsExchangeService: TermsExchangeService
    ) {}

和服务如何在PurchaseMainComponentTermsExchangeComponent

@injectable()
export class TermsExchangeService {

    constructor() {
        debugger; // call 2 times!!!
    }
}

我使用autoBindInjectable

var simpleContainer = new Container({ autoBindInjectable: true })

TermsExchangeService调用的循环构造函数中获取组件时:

for (let item = 0; item < components.length; item++) {
   const container = simpleContainer.get(components[item]);
}

为什么要在每个组件中创建对象?以及如何正常注射?

4

1 回答 1

0

默认情况下injectable不是单例。

解决这个问题可以添加defaultScope: 'Singleton'

var simpleContainer = new Container(
            { 
               autoBindInjectable: true, 
               defaultScope: 'Singleton'
            }
)
于 2019-05-30T06:19:49.773 回答