2017-01-04 3 views
7

Я пытаюсь прикрепить событие click для привязки тегов (исходящих из ajax) и заблокировать перенаправление по умолчанию. Как я могу сделать это в угловом 2?Прикрепление click to anchor tag в angular2

<ul> 
<li><a href="/abc"><p>abc</p></a></li> 
<li><a href="/abc1"><p>abc1</p></a></li> 
<li><a href="/abc2"><p>abc2</p></a></li> 
<li><a href="/abc3"><p>abc3</p></a></li> 
</ul> 

в TS файле

constructor(elementRef: ElementRef, renderer: Renderer) { 

     this.listenFunc = renderer.listen(elementRef.nativeElement, 'click', (event) => { 
      event.preventDefault(); 
      let target = event.target || event.srcElement || event.currentTarget; 
      console.log(target); 

     }); 


    } 

это присоединит событие для всех элементов, как я могу ограничить это на якорь тег только

все помогает оценили

+0

0 можно использовать 'event.target.nodeName', чтобы узнать, на какой HTML-тег нажата стрелка. – ranakrunal9

+0

'(click) = 'fn''. – Jai

+0

@jai спасибо, я не могу манипулировать ответом ajax, я должен обрабатывать его из ts-файла – shahul

ответ

8

Я думаю, что вы не позволяют Угловой работе для вас.

В угловом 2:

  1. Удалите href тег из <a> предотвратить перенаправление страницы.
  2. Затем просто добавьте свой обычный атрибут и функцию углового щелчка.
  3. Добавить в style: "cursor: pointer", чтобы сделать его действовать как кнопка
+1

Но это не делает его рендерингом как ссылку. Он просто выглядит как обычный текст абзаца. – Neutrino

+1

вы можете контролировать внешний вид с помощью CSS. На что вы хотите, чтобы ваша ссылка выглядела? – PatrickW

+1

Ссылка, и я бы предпочел не путаться с ручным стилем, просто чтобы ссылка выглядела как ссылка, как и должно быть в любом случае. – Neutrino

3
<a href="#" (click)="onGoToPage2()">Go to page 2</a> 
+0

Это работало для меня в Angular 4. – skiabox

+0

, но # перезагрузка страницы, есть ли способ применить только событие click на теге href –

1

Вы можете использовать routerLink, который является альтернативой href для угловой 2. ** Используйте routerLink, как показано ниже в HTML

<a routerLink="/dashboard">My Link</a> 

и убедитесь, что вы зарегистрировали routerLink в modules.ts или router.ts, как это

const routes: Routes = [ 
    { path: 'dashboard', component: DashboardComponent } 
] 
1

Я был в состоянии осуществить это успешно

<a [routerLink]="['/login']">abc</a> 
8

Вы можете использовать routerLink (который является альтернативой href для углового 2+) с события нажатия, как показано ниже, чтобы предотвратить перегрузки страницы

<a [routerLink]="" (click)="onGoToPage2()">Go to page 2</a> 
+0

Этот ответ должен быть принят ... – miderose

+0

[routerLink] предназначен для внутренних URL-адресов. Что делать, если мы хотим отправить пользователя на внешний URL-адрес и в то же время наблюдать за событием клика? –

1

<a href="javascript:void(0);" (click)="onGoToPage2()">Go to Page 2</a>

+0

Этот вопрос был задан более года назад. Маловероятно, что у Original Poster все еще есть эта же проблема, и поэтому новые ответы должны стремиться предоставить как можно больше деталей, чтобы показать, как ответ помогает другим, у кого есть такая же проблема. Этот ответ скорее напоминает комментарий, чем полный, исследуемый, объясненный ответ. – Claies