引用Angular developer guide
module.decorator
此函数与$ provide.decorator函数相同,但它通过模块API公开。这允许您将装饰器模式与模块配置块分开。
所以基本上这有什么区别?是否存在一种方法优于另一种方法的情况?为什么不总是使用module.decorator?
答案 0 :(得分:1)
Module.decorator
是1.4中$provide.decorator
的快捷方式。 $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) => { ... });