Skip to content Skip to sidebar Skip to footer

Angular Not Routing Properly. Url Is Localhost:8081/#!/#pagename

I am making a simple Angular application that has an index.html which loads other HTML pages as views based on which navbar item selected; however, the routing is not working as ex

Solution 1:

Why are the other views not loading? The reason why your views are not loaded is because you hit the route. You use 1.6 angular and expect the behaviour from 1.5. There has been a change in location hash-prefix:

Due to aa077e8, the default hash-prefix used for $location hash-bang URLs has changed from the empty string ('') to the bang ('!'). If your application does not use HTML5 mode or is being run on browsers that do not support HTML5 mode, and you have not specified your own hash-prefix then client side URLs will now contain a ! prefix. For example, rather than mydomain.com/#/a/b/c the URL will become mydomain.com/#!/a/b/c.

If you actually want to have no hash-prefix, then you can restore the previous behavior by adding a configuration block to you application:

appModule.config(['$locationProvider', function($locationProvider) { $locationProvider.hashPrefix(''); }]); Source

What to do?1. Set HTML5mode true

$locationProvider.html5Mode(true);

and in html set base in html header:

<base href="/">

Lastly change <a ng-href="#pagename"> to

<ang-href="pagename">

2. Go back to old behaviour from 1.5 - set hash prefix manually This will make your app work as you expect in your question.

app.config(['$locationProvider', function($locationProvider) {
  $locationProvider.hashPrefix('');
}]);

Why is there a hash before the pageName? The way you link is treated as a hashtag anchor tag. Which will scroll down to the current div with the given id. If you fix your problem with one of the above reasons this will be fixed aswell.

Post a Comment for "Angular Not Routing Properly. Url Is Localhost:8081/#!/#pagename"