link angularjs angular-ui-router angular-ui

link - Angularjs $ state abrir enlace en nueva pestaña



ng-href angular 5 (7)

Estoy tratando de implementar una función de "abrir enlace en una nueva pestaña" usando la función $ state.go. Sería increíble si hubiera algo como:

$state.go(''routeHere'', { parameter1 : "parameter" }, { reload : true, newtab : true // or smth like target : "_blank" });

¿Hay alguna manera de hacer eso usando AngularJS?


¡Prueba esto!

<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>


Acabo de intentar esto; aparentemente, agregar target="_blank" funciona con ui-sref :

<a ui-sref="routeHere" target="_blank">A Link</a>

Ahorra la molestia de agregar código a su controlador y le da la URL al pasar el mouse como con cualquier enlace normal. Ganar-ganar


Actualización: OK, acabo de resolverlo usando el siguiente código:

var url = $state.href(''myroute'', {parameter: "parameter"}); window.open(url,''_blank'');


Es posible que no funcione en localhost en el caso de que su aplicación esté en una subcarpeta. De hecho, tuve el mismo problema.

Lo he intentado en línea y funcionó como se esperaba usando:

<a ui-sref="routeHere" target="_blank">Link</a>


La mejor respuesta que encontré fue la extensión de la interfaz de usuario, ya que la función no existe incorporada. Puede encontrar todos los detalles aquí:

Extendiendo el $ state.go del enrutador ui Angular 1.x

Sin embargo, aquí está mi breve explicación de lo que se debe hacer, agregue esto a app.js o al archivo de inicio de la aplicación angular:

angular.module("AppName").config([''$provide'', function ($provide) { $provide.decorator(''$state'', [''$delegate'', ''$window'', function ($delegate, $window) { var extended = { goNewTab: function (stateName, params) { $window.open( $delegate.href(stateName, params, { absolute: true }), ''_blank''); } }; angular.extend($delegate, extended); return $delegate; }]); }]);

En tu codigo

Podrás hacer:

$state.goNewTab(''routeHere'', { parameter1 : "parameter"});


Tuve un problema similar, intente esto si nada de las respuestas anteriores funciona para usted.

var url = ''#'' + $state.href(''preview''); window.open(url,''_blank'');

Básicamente, mientras trabajaba en localhost, sin añadir ''#'' solo estaba redirigiendo a

localhost / vista previa

, en lugar de

localhost / Project_Name / # / preview

No estoy hablando de pasar los datos, solo para abrir $ state en una nueva pestaña.


ui-sref="routeHere" href=""target="_blank"

Este código solucionó mi problema.

Use esto en una etiqueta de anclaje.