 <p><code>Module.decorator</code> was introduced as a shortcut for <code>$provide.decorator</code> in 1.4. <code>$provide.decorator</code> may be still used for backward compatibility.</p> <p>The obvious property of <code>$provide</code> methods is that function scope has access to both provider and instance injectors:</p> <pre><code>app.config(($provide, $compileProvider) =&gt; { $provide.decorator('linkService', ($delegate) =&gt; { $compileProvider.aHrefSanitizationWhitelist(...); return $delegate; }); </code></pre> <p>Less obvious but still important property of <code>$provide</code> methods is that they affect the application after config phase, while module methods don't, this creates the possibilities for lazy loading and other undocumented but potentially beneficial techniques:</p> <pre><code>app.config(($provide) =&gt; { $provide.value('$provide', $provide)); }); app.run(($provide) =&gt; { // app.decorator('service', ...) will do nothing here $provide.decorator('service', ...); }); app.run((service) =&gt; { ... }); </code></pre>