How can I dynamically include one of several AngularJS partials depending on the route?

I'm working on a music app which has urls of the form my-app.com/[0-9]{10}, like so:

my-app.com/0123456789
my-app.com/1293938388

Each one of these is either a song, a playlist, or a user page, and I can query the backend to figure out which one. However, since these URLs are not distinguishable without querying the database, I can't do the normal $routeProvider.when('route-prefix/:routeArgument') to instantiate a different partial for each one.

I'd like to be able to specify a default handler which shows a spinner and queries the database, and then include one of a number of partials and with one of a number of controllers based on the type of the response.

What's the right way to do this in angular? Should I be using ng-include? I would like it if the inactive controllers didn't execute at all, which is why the obvious solution of using a partial with multiple ng-controller directives doesn't seem right.

Thanks!

As discussed in the comments, ng-switch can be used conditionally add or remove content from the DOM, based on the route. (This is in contrast to ng-show/ng-hide, which currently only modify CSS properties to show or hide content that is always in the DOM).