Desativar a manipulação de URL no AngularJS

Estou tentando escrever meu primeiro web-app com o Angular.

No modo normal (html5Mode desativado), Angular força a parte hash do endereço a se parecer com um “caminho” (adicionando um “/”) e codifica caracteres especiais – por exemplo, ele permite um único “?” e “#” no hash e substitui os outros por% 3F e% 23.

Existe uma maneira de desativar esse recurso? Eu não quero usar os resources $ locationProvider / $ routeProvider – eu quero analisar o hash eu mesmo (no meu caso, o usuário irá inserir algum “texto livre” no hash para pesquisar dentro do meu site).

Eu li que o routeProvider não pode ser configurado para usar expressões regulares …

Se htmlMode estiver ativado, a parte hash do endereço não será forçada a se parecer com um caminho (sem “/”), mas ainda codificará caracteres especiais.

Estou ciente de que alguns navegadores podem codificar / escaping os caracteres especiais de qualquer maneira, mas se o usuário conseguiu inserir alguns caracteres especiais em sua barra de endereços, não quero alterá-lo.

obrigado

Não tenho certeza dos efeitos colaterais disso, mas ele faz o trabalho. Observe que ele desabilitará toda a manipulação de localização do aplicativo angular, mesmo se pretendido.

angular.module('sample', []) .config( ['$provide', function ($provide){ $provide.decorator('$browser', ['$delegate', function ($delegate) { $delegate.onUrlChange = function () {}; $delegate.url = function () { return ""}; return $delegate; }]); }]); 

Variante ES6:

 angular.module('sample', []) .config(["$provide", $provide => { $provide.decorator("$browser", ["$delegate", $delegate => { $delegate.onUrlChange = () => { }; $delegate.url = () => ""; return $delegate; }]); }]); 

Testado no Chrome 30, IE9, IE10.
Inspirado por https://stackoverflow.com/a/16678065/369724

Eu uso uma cópia local do angular.js. Procurar por

 $browser.onUrlChange(function(newUrl, newState) { 

e

 $rootScope.$watch(function $locationWatch() { 

comente as linhas correspondentes e o angularjs parará de observar as alterações de URL de localização.

Se bem me lembro, o roteamento do Angular não é obrigatório, mas você deve cuidar do recarregamento de controladores, visualizações, etc.