Because services are singletons. That's why you get that behavior.
I recommend that do not inject $routeParams as the init params of a service. Instead, inject it in controllers, then call service's functions using the values in $routeParams as params.
The code may like this:
factory('Post', function ($resource) {
return {
doPost: function(customerId) {
$resource('api/posts', {customer_id: customerId});
}
};
});
//...
//in some controller
Post.doPost($routeParams.customerId)