<a href="">My Link</a>
在Angular 2中,相同的标签导航到应用程序基础。那在Angular 2中的等效物是什么?
编辑:看起来这是Angular 2路由器中的一个错误,现在在github上有一个问题。
我正在寻找一个开箱即用的解决方案或确认是否没有。
<a href="">My Link</a>
在Angular 2中,相同的标签导航到应用程序基础。那在Angular 2中的等效物是什么?
编辑:看起来这是Angular 2路由器中的一个错误,现在在github上有一个问题。
我正在寻找一个开箱即用的解决方案或确认是否没有。
<a href="" (click)="passTheSalt()">Click me</a>
进入
<a [routerLink]="" (click)="passTheSalt()">Click me</a>
当鼠标悬停在链接上时,会显示一个手形图标,点击链接不会触发任何路由。
注意: 如果要保留查询参数,您应该将queryParamsHandling
选项设置为preserve
:
<a [routerLink]=""
queryParamsHandling="preserve"
(click)="passTheSalt()">Click me</a>
[routerLink]=""
在 Chrome 64 中运行 Angular 5 时会呈现为 <a href="null" (click)="myFunction()">My Link</a>
。 - Zymotik[routerLink]=""
后,文本“Click me”不会显示为链接,也不会显示手形光标图标。 - Emiel Koning那会是相同的,这与 angular2
没有关联。它只是一个简单的HTML标签。
基本上,a
(锚点)标签将由HTML解析器呈现。
编辑
您可以通过在 href
上使用 javascript:void(0)
来禁用它,这样它就不会发生任何事情。 (但这是 hack)。我知道 Angular 1 在开箱即用中提供了此功能,但现在对我来说似乎不正确。
<a href="javascript:void(0)" >Test</a>
另一种方法是使用 routerLink
指令并传递 ""
值,最终会生成空的 href=""
。
<a routerLink="" (click)="passTheSalt()">Click me</a>
#
的作用。我想要一个在Angular2中什么都不做的链接,就像在Angular 1.x中的href=""
一样。 - s.alemXMLHttpRequest cannot load javascript:void(), Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
- MaxpreventDefault
来更加优雅地禁用href
,具体方法请参考此处:https://dev59.com/RFsV5IYBdhLWcg3w6iZ8#44465069 - Michael Kühnelhref="javascript:void(0);"
是有效的。 - Paul Carlton在Angular2中可以通过某些方式来实现,但我强烈反对认为这是一个缺陷。虽然你声称在某些情况下它很有用,但在我看来,这似乎是一种非常错误的行为。任何框架都不应该默认采用这种行为。
撇开分歧,您可以编写一个简单的指令,以获取所有链接并检查其href
的内容,如果长度为0,则执行preventDefault()
。以下是一个小例子。
@Directive({
selector : '[href]',
host : {
'(click)' : 'preventDefault($event)'
}
})
class MyInhertLink {
@Input() href;
preventDefault(event) {
if(this.href.length == 0) event.preventDefault();
}
}
通过在PLATFORM_DIRECTIVES中添加此指令,您可以使其适用于应用程序中的所有部分。
bootstrap(App, [provide(PLATFORM_DIRECTIVES, {useValue: MyInhertLink, multi: true})]);
这里有一个plnkr,它包含一个有效示例。
pointer-events
的问题在于 IE 不支持它(caniuse)(奇怪的是,即使在 IE11 中我也可以绕过它),而且它不能阻止从控制台点击链接。我已经点赞了 @Pankaj 的答案,因为从我的角度来看,这是最简单的方法,我的答案只是用 angular2 实现它的一种方式,我可以让它更容易,但是 CSS 选择器有限。 - Eric Martinez锚点应该导航到某个内容,所以我想当它路由时行为是正确的。如果您需要在页面上切换某些内容,则更像是按钮?我使用Bootstrap,因此可以使用以下内容:
<button type="button" class="btn btn-link" (click)="doSomething()">My Link</button>
我正在使用css这个解决方案:
/*** Angular 2 link without href ***/
a:not([href]){
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none
}
HTML
<a [routerLink]="/">My link</a>
希望这有所帮助
styles.css
文件中,它将非常有效! - user9903<a href="#" (click)="foo(); false">
<a href="" (click)="false">
以下是一些做法:
<a href="" (click)="false">点击我</a>
<a style="cursor: pointer;">点击我</a>
<a href="javascript:void(0)">点击我</a>
1. <a style="cursor: pointer;"></a>
2. <a href="javascript:void(0)" ></a>
3. <a href="current_screen_path"></a>
4. 如果您正在使用Bootstrap:
<button class="btn btn-link p-0" type="button" style="cursor: pointer"(click)="doSomething()">MY Link</button>
<a href="" (click)="goToPage(pageIndex, $event)">Link</a>
my.component.ts
goToPage(pageIndex, event) {
event.preventDefault();
console.log(pageIndex);
}
不确定为什么有些人建议使用routerLink = ""
,在我的Angular 11中它会触发导航。
这是对我有效的方法:
<div class="alert">No data yet, ready to <a href="#" (click)="create();$event.preventDefault()">create</a>?</div>
<a>
标签而不加上"html"吗? - Sasxaa
标签。但那看起来很拙劣。 - s.alem