De lo contrario, en StateProvider

Usando angular-ui-router, ¿cómo puedo usar el método de otra manera en $ stateProvider o cómo puedo usarlo?

No puede usar solo $stateProvider .

Necesita inyectar $urlRouterProvider y crear un código similar a:

 $urlRouterProvider.otherwise('/otherwise'); 

La url /otherwise debe definirse en un estado como de costumbre:

  $stateProvider .state("otherwise", { url : '/otherwise'...}) 

Vea este enlace donde explica ksperling

Puede con $stateProvider usando la syntax catch all ( "*path" ). Solo necesita agregar una configuración de estado en la parte inferior de su lista como la siguiente:

 $stateProvider.state("otherwise", { url: "*path", templateUrl: "views/error-not-found.html" }); 

Todas las opciones se explican en https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters .

Lo bueno de esta opción, a diferencia de $urlRouterProvider.otherwise(...) , es que no está obligado a un cambio de ubicación.

También puede insertar manualmente $ state en la función de lo contrario, que luego puede navegar a un estado que no sea de url. Esto tiene el beneficio de que el navegador no cambia la barra de direcciones, lo que es útil para el manejo de volver a una página anterior.

  $urlRouterProvider.otherwise(function ($injector, $location) { var $state = $injector.get('$state'); $state.go('defaultLayout.error', { title: "Page not found", message: 'Could not find a state associated with url "'+$location.$$url+'"' }); }); 

Ok, el momento tonto cuando te das cuenta de que la pregunta que hiciste ya está respondida en las primeras líneas del código de muestra. Solo eche un vistazo al código de muestra.

  angular.module('sample', ['ui.compat']) .config( [ '$stateProvider', '$routeProvider', '$urlRouterProvider', function ($stateProvider, $routeProvider, $urlRouterProvider) { $urlRouterProvider .when('/c?id', '/contacts/:id') .otherwise('/'); // <-- This is what I was looking for ! .... 

Echa un vistazo aquí.

La respuesta aceptada hace referencia a angular-route pregunta acerca de ui-router . La respuesta aceptada usa el “monolítico” $routeProvider , que requiere el módulo ngRoute (mientras que ui-router necesita el módulo ui.router )

La respuesta mejor calificada usa $stateProvider en $stateProvider lugar, y dice algo como .state("otherwise", { url : '/otherwise'... }) , pero no puedo encontrar ninguna mención de “de lo contrario” en la documentación enlaces . Sin embargo, veo que $stateProvider se menciona en esta respuesta donde dice:

No puede usar solo $stateProvider . Necesita inyectar $urlRouterProvider

Ahí es donde mi respuesta podría ayudarte. Para mí, fue suficiente usar $urlRouterProvider así:

  my_module .config([ , '$urlRouterProvider' , function( , $urlRouterProvider){ //When the url is empty; ie what I consider to be "the default" //Then send the user to whatever state is served at the URL '/starting' //(It could say '/default' or any other path you want) $urlRouterProvider .when('', '/starting'); //... }]); 

Mi sugerencia es coherente con la documentación de ui-router , ( esta revisión específica ), donde incluye un uso similar de. when(...) método (la primera llamada a la función):

 app.config(function($urlRouterProvider){ // when there is an empty route, redirect to /index $urlRouterProvider.when('', '/index'); // You can also use regex for the match parameter $urlRouterProvider.when(/aspx/i, '/index'); }) 

Solo quiero mencionar las excelentes respuestas que ya se proporcionan. La última versión de @uirouter/angularjs marcó la clase UrlRouterProvider como obsoleta. Ahora recomiendan usar UrlService en UrlService lugar. Puede lograr el mismo resultado con la siguiente modificación:

 $urlService.rules.otherwise('/defaultState'); 

Métodos adicionales: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html