Цитирование указателя углового разработчика
module.decorator
Эта функция такая же, как и функция $ offer.decorator, за исключением того, что она открывается через API модуля. Это позволяет отделить ваши шаблоны декоратора от блоков конфигурации модуля.
Итак, в чем же разница? Существуют ли сценарии, когда один метод предпочтительнее другого? Почему бы не всегда использовать module.decorator?
Module.decorator
был введен в качестве ярлыка для $provide.decorator
в 1.4. $provide.decorator
может по-прежнему использоваться для обратной совместимости.
Очевидным свойством методов $provide
является то, что область функций имеет доступ к инжекторам поставщиков и экземпляров:
app.config(($provide, $compileProvider) => {
$provide.decorator('linkService', ($delegate) => {
$compileProvider.aHrefSanitizationWhitelist(...);
return $delegate;
});
Менее очевидным, но все еще важным свойством методов $provide
является то, что они влияют на приложение после фазы конфигурации, в то время как модульные методы этого не делают, это создает возможности для ленивой загрузки и других недокументированных, но потенциально полезных методов:
app.config(($provide) => {
$provide.value('$provide', $provide));
});
app.run(($provide) => {
// app.decorator('service', ...) will do nothing here
$provide.decorator('service', ...);
});
app.run((service) => { ... });