From 6ee7f218719b3cd0fc6e3c5a66994684be02674b Mon Sep 17 00:00:00 2001 From: Chris Thielen Date: Thu, 5 Jan 2017 10:10:02 -0600 Subject: [PATCH] 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 --- src/services.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/services.ts b/src/services.ts index aa3fa21c2..f093fa9b5 100644 --- a/src/services.ts +++ b/src/services.ts @@ -15,7 +15,7 @@ import { IRootScopeService, IQService, ILocationService, ILocationProvider, IHttpService, ITemplateCacheService } from "angular"; import { - services, applyPairs, isString, trace, extend, UIRouter, StateService, UrlRouter, UrlMatcherFactory, ResolveContext + services, applyPairs, isString, trace, extend, UIRouter, StateService, UrlRouter, UrlMatcherFactory, ResolveContext, unnestR } from "ui-router-core"; import { ng1ViewsBuilder, getNg1ViewConfigFactory } from "./statebuilders/views"; import { TemplateFactory } from "./templateFactory"; @@ -88,6 +88,14 @@ runBlock.$inject = ['$injector', '$q', '$uiRouter']; function runBlock($injector: IInjectorService, $q: IQService, $uiRouter: UIRouter) { services.$injector = $injector; services.$q = $q; + + // The $injector is now available. + // Find any resolvables that had dependency annotation deferred + $uiRouter.stateRegistry.get() + .map(x => x.$$state().resolvables) + .reduce(unnestR, []) + .filter(x => x.deps === "deferred") + .forEach(resolvable => resolvable.deps = $injector.annotate(resolvable.resolveFn)); } // $urlRouter service and $urlRouterProvider @@ -106,6 +114,7 @@ export function watchDigests($rootScope: IRootScopeService) { mod_init .provider("$uiRouter", $uiRouter); mod_rtr .provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]); +mod_util .provider('$urlService', getProviderFor('urlService')); mod_util .provider('$urlMatcherFactory', ['$uiRouterProvider', () => router.urlMatcherFactory]); mod_util .provider('$templateFactory', () => new TemplateFactory()); mod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));