Проблема проста: с помощью AngularJS мы не можем вводить $log в провайдера.
angular.module('my.module', [])
.provider('myProvider', function ($log, $logProvider) {
$log.log("Aloha!"); // Unknown provider: $log
$logProvider.log("Hi!"); // undefined is not a function: $logProvider has no `log` method
this.$get = function($log) {
$log.log("Hello!"); // Everything is ok here
};
});
Да, мы можем ввести $logProvider
, но у него нет необходимых методов (.log
, .error
и т.д.).
Да, мы можем ввести $logProvider
, а затем вручную вызвать $logProvider.$get()
, но мы не сможем использовать дополнительную логику от декораторов.
Да, мы можем написать собственный logProvider, но мне интересно, почему Angular не поддерживает эту функцию из коробки.
Итак, мы не можем использовать консоль в режиме "true Angular" в провайдере? Этот факт очень странный. И грустно.
Вопрос: как мне нужно использовать консоль в режиме "true Angular" в провайдерах?
Мне не удалось найти объяснений по этой проблеме. Angular Руководство для разработчиков говорит, что нам нужно использовать $log везде вместо консоли.