Как открыть элементы `<li>` в новой вкладке с помощью параметров запроса в активированном маршруте в Angular

У меня есть список элементов, которые говорят

<li [class.active_view] = "Display('A')" (click) = "Az()">A</li>
<li [class.active_view] = "Display('B')" (click) = "Bz()">B</li>
<li [class.active_view] = "Display('C')" (click) = "Cz()">C</li>

В настоящее время всякий раз, когда пользователь нажимает на любую из вкладок, которые я использую

this.activatedroute.queryParams.subscribe(query => { 
//some_code_to_set_url
});

а затем я использую этот URL, чтобы перейти к нему. Но при использовании <li> я не могу включить опцию Open in New Tab при щелчке правой кнопкой мыши. Есть ли способ добиться этого с помощью тега <li> (я пробовал использовать href, но он ломает URL-адрес и заменяет многие символы, такие как ?, на %3F и т. д.). Как открыть его в новой вкладке и включить его правой кнопкой мыши.

Вы не можете открыть новую вкладку, потому что это больше не ссылка - она ​​запускает навигацию в фоновом режиме.

jonrsharpe 24.05.2018 23:43
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
1
283
2

Ответы 2

Эта опция доступна только при использовании тегов <a>. Вот почему они существуют. Кроме того, это семантически неверно. Скажем, программы чтения с экрана и другое программное обеспечение, которое просто использует код, не смогут получить к ним доступ в виде ссылок.

Кроме того, чтобы они открывались в новых вкладках, выполните одно из следующих действий:

  • Поменяйте их на <a> и отдайте target = "_blank".
  • Используйте функцию window.open(), чтобы открыть URL.

В Angular JS window.open можно вызвать с помощью службы $window:

.controller('exampleCtrl', ['$scope', '$window',
  function($scope, $window) {
    $scope.redirectToGoogle = function(){
      $window.open('https://www.google.com', '_blank');
    };
  }
]);

Ссылка: Откройте новую вкладку при нажатии кнопки в AngularJS

Спасибо за ответ, но я использую Angular, а не AngularJS.

Aakash Singh 24.05.2018 23:46

@AakashSingh Подожди, немного сбит с толку. Просто скажите на Angular версию?

Praveen Kumar Purushothaman 24.05.2018 23:47

Это Angular 4, я знаю, что использование <a></a> сделает это возможным. Но я хочу спросить, есть ли возможность использовать Angular 4, то есть любой вариант маршрутизатора, который может мне в этом помочь. Также я попытался сделать это, используя <a routerLink='/search/A'> </a> и установив параметры маршрута на {path:'/search/:id,component:ResultComponent}.

Aakash Singh 24.05.2018 23:52

Но я не смог этого сделать.

Aakash Singh 24.05.2018 23:53

@AakashSingh Я прекрасно понимаю вашу ситуацию. К сожалению, даже в Angular JS это невозможно сделать без использования тегов <a>. :(

Praveen Kumar Purushothaman 24.05.2018 23:54

@PraveenKumar невозможное - ничто :)

Eliseo 25.05.2018 08:42

Я думаю, вы всегда можете использовать обходной путь (я не проверяю код, но моя идея есть) в вашем компоненте

<li [class.active_view] = "Display('A')" (click) = "Az(newpage)">A</li>
<form #newpage [action] = "url" target = "_blank">

Ваша функция Az

Az(form:any)
{
    this.url = "google";
    form.submit();
}

У меня не работает. Думаю, вы не поняли вопроса.

Aakash Singh 25.05.2018 20:42

Другие вопросы по теме