Skip to content

Commit 6ee7f21

Browse files
BREAKING CHANGE: Deprecate public use of $urlRouter and $urlMatcherFactory in favor of $urlService
The `UrlService` combines the commonly used URL APIs in a single place. The service may be injected in a run block as `$urlService`, or in a config block as `$urlServiceProvider`. The service object has two nested API objects, `rules` and `config`. An example usage is `$urlService.rules.otherwise('/home')` The existing API for `$urlRouter` and `$urlMatcherFactory` will continue to function as before, but are now considered an "internal API".\ The new `$urlService` is a facade which delegates to the appropriate internal APIs. feat(UrlService): Create UrlService API (facade) for easier access to URL based APIs
1 parent 7e1f36e commit 6ee7f21

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/services.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
IRootScopeService, IQService, ILocationService, ILocationProvider, IHttpService, ITemplateCacheService
1616
} from "angular";
1717
import {
18-
services, applyPairs, isString, trace, extend, UIRouter, StateService, UrlRouter, UrlMatcherFactory, ResolveContext
18+
services, applyPairs, isString, trace, extend, UIRouter, StateService, UrlRouter, UrlMatcherFactory, ResolveContext, unnestR
1919
} from "ui-router-core";
2020
import { ng1ViewsBuilder, getNg1ViewConfigFactory } from "./statebuilders/views";
2121
import { TemplateFactory } from "./templateFactory";
@@ -88,6 +88,14 @@ runBlock.$inject = ['$injector', '$q', '$uiRouter'];
8888
function runBlock($injector: IInjectorService, $q: IQService, $uiRouter: UIRouter) {
8989
services.$injector = $injector;
9090
services.$q = <any> $q;
91+
92+
// The $injector is now available.
93+
// Find any resolvables that had dependency annotation deferred
94+
$uiRouter.stateRegistry.get()
95+
.map(x => x.$$state().resolvables)
96+
.reduce(unnestR, [])
97+
.filter(x => x.deps === "deferred")
98+
.forEach(resolvable => resolvable.deps = $injector.annotate(resolvable.resolveFn));
9199
}
92100

93101
// $urlRouter service and $urlRouterProvider
@@ -106,6 +114,7 @@ export function watchDigests($rootScope: IRootScopeService) {
106114

107115
mod_init .provider("$uiRouter", <any> $uiRouter);
108116
mod_rtr .provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]);
117+
mod_util .provider('$urlService', getProviderFor('urlService'));
109118
mod_util .provider('$urlMatcherFactory', ['$uiRouterProvider', () => router.urlMatcherFactory]);
110119
mod_util .provider('$templateFactory', () => new TemplateFactory());
111120
mod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));

0 commit comments

Comments
 (0)