Не удается ввести службу в angular js

Я постоянно не могу внедрить $logслужбу способом minify save в класс контроллера компонента.

Чтобы проверить, что инъекция сохранена, я добавил 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';тип аннотации. Все это не имеет никакого эффекта.

Есть идеи, как заставить инъекцию зависимости работать?

1 ответ

  1. Ваша аннотация кажется правильнойSearchInputController, но сообщение об ошибке жалуется на другой контроллер SearchResultController. Я предлагаю вам сделать пометки и на этот раз.

    Использовать https://babeljs.io/repl / чтобы проверить, как ES6 компилируется до ES5. Это может быть полезно при попытке отследить ошибки в аннотации. Использование ng-annotateв какой-то форме также должно работать, когда вы аннотируете правильный контроллер.