Я пытаюсь создать провайдера в angularjs с es6, но кажется, что он не получает инъекции должным образом ($ get не получает вызов). Ниже мой код:Поставщик AngularJs в ES6
export default class NgIntlTelInputProvider {
constructor() {
this.props = {};
this.setFn = (obj) => {
if (typeof obj === 'object') {
for (var key in obj) {
this.props[key] = obj[key];
}
}
};
this.set = this.setFn;
}
$get() {
return Object.create(this, {
init: {
value: (elm) => {
if (!window.intlTelInputUtils) {
console.log('intlTelInputUtils is not defined. Formatting and validation will not work.');
}
elm.intlTelInput(props);
}
},
});
}
}
Вот мой app.js
angular.module('sample-app', [ngRoute])
.config(routing)
.provider('ngIntlTelInputPr', NgIntlTelInputProvider)
.directive('ngIntlTelInput',() => new NgIntlTelInput());
Так что я пытаюсь внедрить поставщик в директиве, но когда я делаю так его ближайшим, как undefined
. Ниже моя директива
export default class NgIntlTelInput {
constructor(ngIntlTelInputPr, $log, $window, $parse) {
this.restrict = 'A';
this.require = 'ngModel'
this.ngIntlTelInputPr = ngIntlTelInputPr;
console.log('Provider:', ngIntlTelInputPr)
}
}
NgIntlTelInput.$inject = ['ngIntlTelInput', '$log', '$window', '$parse'];
Вы импортирования самого файла поставщика, в модуле, где вы пытаетесь внедрить? – rrd
и что вы подразумеваете под этим комментарием 'Вы импортируете сам файл провайдера' –
Я имею в виду, у вас есть строка, подобная этой в файле app.js: import NgIntlTelInputProvider из 'some/directory/provider'; – rrd