当前位置: 首页 > 知识库问答 >
问题:

Angular2,禁用锚元素的正确方法是什么?

慕容渊
2023-03-14

我正在开发一个Angular2应用程序,我需要显示—但是<code>禁用<code>一个<code>

更新

请注意*ngFor,这将阻止使用*ngIF而不渲染的选项

<a *ngFor="let link of links"
   href="#" 
   [class.disabled]="isDisabled(link)" 
   (click)="onClick(link)">
   {{ link.name }}
</a>

TypeScript 组件有一个如下所示的方法:

onClick(link: LinkObj) {
    // Do something relevant with the object... 
    return false;
}

我需要防止元素被点击,而不仅仅是让它看起来像是CSS。我假设我首先需要潜在地绑定到<code>〔disabled〕

我考虑过使用< code>pointer-events: none,但是这妨碍了我的< code>cursor: not-allowed风格的工作——这是需求的一部分。

共有3个答案

祁飞翰
2023-03-14

我的回答可能会迟到。它可以通过仅在锚标签中的内联css来实现。

考虑到<code>isDisabled</code>是组件中的一个属性,它可以是<code>true</code>或<code>false</code>。

普朗克:https://embed.plnkr.co/TOh8LM/

姬国安
2023-03-14

对于< code>[routerLink],您可以使用:

添加此CSS应该满足您的要求:

a.disabled {
   pointer-events: none;
   cursor: not-allowed; 
}

这应该可以解决@MichelLiu在评论中提到的问题:

<a href="#" [class.disabled]="isDisabled(link)"
    (keydown.enter)="!isDisabled(link)">{{ link.name }}</a>

另一种方法

<a [routerLink]="['Other']" *ngIf="!isDisabled(link)">{{ link.name }}</a>
<a  *ngIf="isDisabled(link)">{{ link.name }}</a>  

Plunker 示例

方和顺
2023-03-14

在CSS中指定指针事件:无会禁用鼠标输入,但不会禁用键盘输入。例如,用户仍然可以通过按Enter键或(在Windows中)Menu键来单击链接。您可以通过拦截keydown事件来禁用特定的击键,但这可能会使依赖辅助技术的用户感到困惑。

禁用链接的最佳方法可能是删除其 href 属性,使其成为非链接。您可以使用条件 href 属性绑定动态执行此操作:

<a *ngFor="let link of links"
   [attr.href]="isDisabled(link) ? null : '#'"
   [class.disabled]="isDisabled(link)"
   (click)="!isDisabled(link) && onClick(link)">
   {{ link.name }}
</a>

或者,如günter zch Bauer的回答,您可以创建两个链接,一个正常,一个禁用,并使用< code>*ngIf显示其中一个:

<ng-template ngFor #link [ngForOf]="links">
    <a *ngIf="!isDisabled(link)" href="#" (click)="onClick(link)">{{ link.name }}</a>
    <a *ngIf="isDisabled(link)" class="disabled">{{ link.name }}</a>
</ng-template>

以下是一些使链接看起来被禁用的CSS:

a.disabled {
    color: gray;
    cursor: not-allowed;
    text-decoration: underline;
}
 类似资料:
  • 问题内容: 我正在 Angular2 应用程序上工作,我需要显示-但是是 HTML 元素。正确的方法是什么? 更新 请注意,这会阻止使用选项,而不是完全渲染。 该 打字稿 组件有一个方法,看起来像这样: 我实际上需要防止元素被单击,而不仅仅是与 CSS 一起出现。我以为我首先需要潜在地绑定到属性,但这是不正确的,因为锚元素没有属性。 我查看并考虑过使用,但是这妨碍了我的工作方式-这是要求的一部分。

  • 我创建了一个元素列表,我想更新其中一个列表元素 这是对update方法的调用: 这是更新方法: 在该方法中,我收到警告“从方法生成函数”,并建议“方法‘update\elem’可能是‘static’” 更新列表元素而不收到警告的正确方法是什么?

  • 我有一个带有两个按钮的tkinter应用程序<代码>运行应用程序和。我不想让最终用户有机会单击,如果他没有先单击。 因此,按钮需要在首先单击按钮后取消禁用。 在下面的代码中,我创建了一个检查器函数,它应该在上面完成,但是存储数据按钮总是处于禁用状态。 这是我的代码:

  • 问题内容: 假设我有一个React类P,它渲染了两个子类C1和C2。 C1包含一个输入字段。我将此输入字段称为Foo。 我的目标是让C2对Foo的变化做出反应。 我已经提出了两种解决方案,但是它们都不对。 第一个解决方案: 为P分配一个状态,。 在P中创建一个函数,该函数接受一个事件并设置。 将其作为传递给C1 ,然后让C1绑定到Foo。 这可行。每当Foo的值改变时,它都会触发P中的a,因此P会

  • null null 就像在我的示例中一样,如果我有一个C1的大型呈现,我真的不想仅仅因为C1有一个form元素就把C1的整个放到P的中。 我该怎么做?

  • 问题内容: 在Angular1中,可以通过配置$ http-provider解决此问题。喜欢: 在Angular2中做同样的事情是什么好习惯? 在Angular2中使用http请求,我们需要使用Http类。当然,将CSRF行添加到每个后功能调用中不是一个好习惯。 我猜在Angular2中,我应该创建自己的类,该类继承Angular2的Http类并重新定义后功能。是正确的方法还是更优雅的方法? 问题