Learning Angular. Working with 1.6.6.
Trying to use ui.router
, running into an issue with injecting components.
I've been using the following as resources to structure my project: AngularJS: Understanding design pattern https://github.com/angular-app/angular-app
Both these resources suggest using module
as a container for the code underneath them. For example from my own project:
angular. module('randomTownGenerator.module', [ 'randomTown.service', 'randomTown.controller' ]);
Each of those dependancies is defined in its own file. When I specify the above module
as the component for the the route:
var randomTownGenerator = { name: 'randomTownGenerator', url: '/random-town', component: 'randomTownGenerator.module' }
I get:
Error: [$injector:unpr] Unknown provider: randomTownGenerator.moduleDirectiveProvider <- randomTownGenerator.moduleDirective
How can I pass the randomTownGenerator.module
, which is just a wrapper around the service
, template
, and controller
, to ui.router
?
2 Answers
Answers 1
You have provided a module where it is expecting an angular component.
component: 'randomTownGenerator.module'
Here angular-ui-router is expecting a angular component to generate as the view for the state 'randomTownGenerator'. Please refer the angularjs documentation on how to create a component. https://code.angularjs.org/1.6.6/docs/guide/component
Answers 2
You are trying to mixup the angularjs earlier version of injecting a module and new way of injecting module.
You should provide a component as a view with the later version so that will be loaded when it is required.
var States = { "app": { path: "", routing: null, definition: { name: "app", url: "", onEnter: function () { console.info("App state entered."); }, params: { // }, resolve: { // }, views: { "app@": { component: "appComponent" } }, abstract: true } } };
where component should be a component not a module. Here is a complete example
of how to create states with ui-router and angularjs 1.6 version
0 comments:
Post a Comment