UI-router is a much more powerful replacement for ngRoute. UI-Router allows you to have nested views within your page rather than just one view at a time using ngRoute. I found a great walkthrough on how to get this set up here. With UI-Router you don’t have to have your states and routes linked to the url so you can change different parts of the page without changing the URL.
When setting it up one thing I kept forgetting to do was put ‘ui.router in the angular.module. It needs to be done like this:
var app = angular.module('app', ['ui.router']);
Using ui-router saves you the trouble of using a lot of ngInclude, ngShow, ngHide, and ngIf in your html page and makes everything easier to layout and much cleaner.