我正在开发一个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风格的工作——这是需求的一部分。
我的回答可能会迟到。它可以通过仅在锚标签中的内联css来实现。
考虑到<code>isDisabled</code>是组件中的一个属性,它可以是<code>true</code>或<code>false</code>。
普朗克:https://embed.plnkr.co/TOh8LM/
对于< 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 示例
在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类并重新定义后功能。是正确的方法还是更优雅的方法? 问题