А что будет, если перейти по #/metal/id={{doc.id}}?
Если при клике на ссылку вам надо отобразить страницу с детальной информацией об объекте, то вам надо смотреть в сторону resolve секции в объявлении $routeProvider.when
В текущей реализации вы отбираете у angular.js его хлеб.
Это может выглядеть как-то так
// Это контроллер, который будет привязан к содержимому ng-view после перехода по соотв. url
// Внедряемая зависимость document возникает в момент разрешения зависимостей при активации роута
app.controller('DocumentController', ['$scope','document', function($scope, doc){
$scope.document = doc;
}]);
app.config(['$routeProvider',, function($routeProvider) {
$routeProvider.when('/metal/:type/:id', {
templateUrl: '/makeup/metal.html',
controller: 'DocumentController',
// Данная секция отвечает за разрешение зависимостей роута. Объекты из этой секции внедряются в указанный контроллер с соотв. именами
resolve: {
document: ['doc','$route', function(doc,$route){
// Мы вытаскиваем из роута параметры id и type, запрашиваем у фабрики соотв. объект.
// Фабрика в ответ возвращает нам promise, который мы возвращаем как зависимость, которая должна быть разрешена, и инициирует http-запрос. После получения объекта фабрика разрешает promise, инстанцируется контроллер с внедрением полученного объекта и отображается шаблон
return doc($route.current.params.id, $route.current.params.type);
}]
}
});