AngularJS ui-router иначе указать вместо url?

Я использую AngularJS и ui-router и в своем app.js. У меня есть следующая строка:

$urlRouterProvider.otherwise('/');

Однако Я не хочу, чтобы он отправлял пользователя по URL, но вместо в состояние:

.state('404',
        {
            views: {
                'body': {
                    templateUrl: 'partials/404.html',
                }
            }
        });

Обычно я просто делал это:

$state.go('404');

Как это сделать для другого метода?

Обратите внимание: что мое состояние 404 не имеет URL-адреса, поэтому в основном он сохраняет URL-адрес, который пользователь ввел или посетил, и просто изменил шаблон.

Ответ 1

Я думаю, вы достигли этого с помощью этого кода

$urlRouterProvider.otherwise(function($injector, $location){
  $injector.invoke(['$state', function($state) {
    $state.go('404');
  }]);
}); 

Ответ 2

Попробуйте.

$urlRouterProvider.otherwise(function($injector, $location){
    $injector.get('$state').go('404');
});

Ответ 3

Просто небольшое улучшение ответа @kdlcruz:

$urlRouterProvider.otherwise(function($injector){
    $injector.invoke(['$state', function($state) {
        $state.go('404', {}, { location: false } );
    }]);
});

Таким образом, вы по-прежнему можете сохранить неверный URL-адрес и изменить только состояние.