[英]Multiple Dependency Inection Tsyringe
我正在嘗試使用 tsyringe 實現級聯。
我有一個單例數據庫類,它必須注入到必須注入到控制器類中的服務類中:
@injectable()
class DashboardDAO implements IDashboardDAO {...}
@injectable()
class DashboardService implements IDashboardService {
construtor(@inject('DashboardDAO') private dashboardDao: IDashboardDAO){}
}
@injectable()
class DashboardController {
construtor(@inject('DashboardService') private dashboardService: IDashboardService){}
}
在我的容器中,我有以下配置。
/** REPOSITORIES */
container.registerSingleton<IDashboardDAO>('DashboardDAO', DashboardDAO);
/** SERVICES */
container.registerSingleton<IDashboardService>('DashboardService', DashboardService);
我想用注入的所有內容實例化控制器,如下所示:
const controller = container.resolve(DashboardController);
它無法解決...我收到以下錯誤:
嘗試解決未注冊的依賴項令牌
如果我做下面的代碼工作正常,但我想解決所有注入的控制器。
container.resolve(DashboardService);
有誰知道為什么?
太棒了!
實現接口的服務已正確注冊,但一個小的改進是在注冊時省略模板類型,因為它沒有添加任何內容:
container.registerSingleton('DashboardDAO', DashboardDAO);
container.registerSingleton('DashboardService', DashboardService);
我建議使用符號而不是硬編碼的字符串,但這是次要的。
問題是您將DashboardController
類標記為可注入,但沒有告訴tsyringe
如何解析該類。 一種方法是將其標記為單例:
@singleton()
class DashboardController {...}
或者:
container.registerSingleton(DashboardController)
然后使用container.resolve(DashboardController)
解析應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.