我经常无法以最小化保存方式将$log
服务注入到组件的控制器类中。
为了检查注射是否保存,我将ng-strict-di
添加到了我的应用中。这个术语导致SearchResultController is not using explicit annotation and cannot be invoked in strict mode
这很好,因为我现在依赖于隐式注入。
所以我在组件实现中添加了一个显式注入:
import htmlTemplate from './searchInput.html';
class SearchInputController {
constructor($log) {
this._log = $log;
this.searchText = 'Text to search for';
}
handleUpdate() {
this.onChange({value: this.searchText});
}
doubleMe(i) {
this._log.debug('SearchInputController.doubleMe: i='+i);
return i+i;
}
}
SearchInputController.$inject = ['$log'];
let searchInputComponent = {
template: htmlTemplate,
controller: SearchInputController,
bindings: {
onChange: '&'
}
};
export default searchInputComponent;
这没有效果,错误信息仍在抱怨缺少注射。
我还尝试过ng-annotate-loader和ng-annotate-webpack-plugin。并且还尝试了/*@ngInject*/
和'ngInject';
类型注释。所有这些都没有效果。
如何让依赖注入工作?
答案 0 :(得分:0)
您的注释对于SearchInputController
似乎是正确的,但错误消息是抱怨不同的控制器SearchResultController
。我建议你也需要注释那个。
使用https://babeljs.io/repl/检查ES6如何编译为ES5。在尝试跟踪注释中的错误时,这非常有用。在注释正确的控制器时,以某种形式使用ng-annotate
也应该有效。