Angulaire $routeParams: obtenir des paramètres de la requête sous forme de tableau

Lorsque j'ai plusieurs id paramètres dans la requête, $routeParams.id me donne un tableau.
C'est très bien. Mais, si un seul id est présent dans la requête, j'obtiens une chaîne de caractères.

/?id=12&id=34&id=56    // $routeParams.id = ["12", "34", "56"]
/?id=12                //$routeParams.id = "12"

Ce qui est mauvais. Parce que dans le premier cas, $routeParams.id[0] donne "12",
alors que dans le second, il donne "1" (premier char de "12").

Je peux travailler partout en insérant un vide id= à tous mes liens, mais c'est laid.

Voir dans Plunker

Est "la vérification de type de contrôleur" ma seule option? Si oui, comment dois-je faire?

index.html:

<html ng-app="app">
<head>
  <script src="//code.angularjs.org/1.3.15/angular.js"></script>
  <script src="//code.angularjs.org/1.3.15/angular-route.js"></script>
  <script src="script.js"></script>
</head>

<body>
  <div ng-view></div>
</body>
</html>

home.html:

<a href="#/?id=12">#/?id=12</a><br/>
<a href="#/?id=12&id=34&id=56">#/?id=12&id=34&id=56</a><br/>
<a href="#/?id=12&id=">#/?id=12&id=</a><br/>

<pre>id: {{id | json:0}}</pre>
<pre>id[0]: {{id[0] | json}}</pre>

script.js:

angular.module('app', ['ngRoute'])

.config([
    '$routeProvider',
    function($routeProvider) {
        $routeProvider.when('/', {
            templateUrl: 'home.html',
            controller: 'HomeCtrl'
        });
    }
])

.controller('HomeCtrl', [
    '$scope', '$routeParams',
    function($scope, $routeParams) {
        $scope.id = $routeParams.id;
    }
]);

EDIT:
Pour ceux qui se le demandent, ce que je suis en train de réaliser est: inter-contrôleur (ou inter-view) de la communication. L'utilisateur sélectionne certains éléments dans une vue, et voit des détails pour les éléments sélectionnés dans la vue suivante. Voir dans Plunker.

OriginalL'auteur musa | 2015-04-11