我正在尝试将click事件附加到锚定标记(来自ajax)并阻止默认重定向。我该怎么做呢?
<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);
});
}
这会将事件附加到所有元素,如何将其限制为仅锚标记?
[所有帮助表示赞赏。
您可以通过以下单击事件使用routerLink
(对于角度2+,它是routerLink
的替代项),以防止重新加载页面
href
我认为您不是让Angular为您服务。
角度2:
<a [routerLink]="" (click)="onGoToPage2()">Go to page 2</a>
中删除href
标签以防止页面转发。<a>
以使其像按钮一样操作您只需在点击方法处理程序调用:style: "cursor: pointer"
之前添加!!
。通过将方法的返回值转换为布尔值,(click)="!!onGoToPage2()"
将防止发生默认操作。如果是!!
方法,则它将变为void
。
false
我已经可以通过简单地使用<a href="#" (click)="onGoToPage2()">Go to page 2</a>
来使其工作。引号内的方括号很重要。无需阻止方法中的默认操作或任何其他操作。这似乎类似于“!”方法,但无需在方法的开头添加不清楚的语法。
所以您的完整锚标记看起来像这样:
[routerLink]="[]"
只需确保您的方法正确运行,否则您可能最终会刷新页面,这会使真正的错误变得非常混乱!
您可以尝试这样的事情:
<a [routerLink]="[]" (click)="clickMethod()">Your Link</a>
OR
<a href="javascript: void(0);" (click)="method()">
<a href="javascript: void(0);" [routerLink]="['/abc']">
我在Angular 5中遇到了此问题,该问题仍然遵循该链接。解决方案是让函数返回<a href="javascript:void(0);" (click)="onGoToPage2()">Go to Page 2</a>
,以防止刷新页面:
false
<a href="" (click)="openChangePasswordForm()">Change expired password</a>
我在重新加载页面时遇到问题,但是使用openChangePasswordForm(): boolean {
console.log("openChangePasswordForm called!");
return false;
}
可以避免这种情况:
routerlink="."
我从Angular Material文档上的按钮获得了灵感:<a routerLink="." (click)="myFunction()">My Function</a>
您可以使用<a [routerLink]="['/login']">abc</a>
替代角度2的routerLink
。**使用href
,如下所示[html
routerLink
并确保您在这样的modules.ts或router.ts中注册<a routerLink="/dashboard">My Link</a>
routerLink
我必须结合几个答案才能找到可行的解决方案。
此解决方案将:
不导航至const routes: Routes = [
{ path: 'dashboard', component: DashboardComponent }
]
我已经检查了以上所有答案,我们只需要实现两件事即可按预期工作。
Step-1:在HTML页面的锚标记中添加(click)事件,并删除href =“”,因为Angular不支持它,而是使用< [routerLink =“”
http://mySite/#调用上述函数以attach click事件以锚定.ts文件中的标记(来自ajax),Step-2:
<ul>
<li><a routerLink="" (click)="hitAnchor1($event)"><p>Click One</p></a></li>
<li><a routerLink="" (click)="hitAnchor2($event)"><p>Click Two</p></a></li>
</ul>
就这些。它按预期工作。我创建了下面的示例,您可以看一下:- hitAnchor1(e){
console.log("Events", e);
alert("You have clicked the anchor-1 tag");
}
hitAnchor2(e){
console.log("Events", e);
alert("You have clicked the anchor-2 tag");
}