В чем разница между $ provide.decorator и module.decorator?

0

Цитирование указателя углового разработчика

module.decorator

Эта функция такая же, как и функция $ offer.decorator, за исключением того, что она открывается через API модуля. Это позволяет отделить ваши шаблоны декоратора от блоков конфигурации модуля.

Итак, в чем же разница? Существуют ли сценарии, когда один метод предпочтительнее другого? Почему бы не всегда использовать module.decorator?

Теги:

1 ответ

1

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) => { ... });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню