A UI-Router Module's imperative configuration
If a UI-Router Module needs to perform some configuration (such as registering
parameter types or Transition Hooks) a configFn
should be supplied.
The function will be passed the UIRouter
instance, the module's Injector
,
and the module object.
import { Injector } from "@angular/core";
import { UIRouter } from "@uirouter/angular";
import { requireAuthHook } from "./requireAuthHook";
import { MyService } from "./myService";
export function configureMyModule(uiRouter: UIRouter, injector: Injector, module: StatesModule) {
// Get UIRouter services off the UIRouter object
let urlConfig = uiRouter.urlService.config;
let transitionService = uiRouter.transitionService;
uiRouter.trace.enable("TRANSITION");
transitionService.onBefore({ to: (state) => state.requiresAuth }, requireAuthHook);
// Create a slug type based on the string type
let builtInStringType = urlConfig.type('string');
let slugType = Object.assign({}, builtInStringType, { encode: (str) => str, decode: (str) => str });
urlConfig.type('slug', slugType);
// Inject arbitrary services from DI using the Injector argument
let myService: MyService = injector.get(MyService)
myService.useFastMode();
}
@NgModule({
imports: [
UIRouterModule.forChild({ states: STATES, config: configureMyModule });
]
})
class MyModule {}
The module's UI-Router states
This list of Ng2StateDeclaration objects will be registered with the StateRegistry.
Also, the components that the states route to will be added to entryComponents
so they will be compiled.
Generated using TypeDoc
UI-Router Module declarative configuration which can be passed to UIRouterModule.forChild