[解決済み] Angular2、アンカー要素を無効にする正しい方法は何ですか?
質問
私は今
Angular2
アプリケーションに取り組んでいて、表示する必要があります -- しかし
disable
は
<a>
HTML
という要素があります。これを行うための正しい方法は何でしょうか?
更新
このため
*ngFor
を使用するオプションが無効になります。
*ngIf
をレンダリングしない
<a>
を完全にレンダリングしない。
<a *ngFor="let link of links"
href="#"
[class.disabled]="isDisabled(link)"
(click)="onClick(link)">
{{ link.name }}
</a>
この タイプスクリプト コンポーネントには、次のようなメソッドがあります。
onClick(link: LinkObj) {
// Do something relevant with the object...
return false;
}
要素をクリックできるように見せるだけでなく、実際にクリックできないようにする必要があります。
CSS
. 私は、潜在的に
[disabled]
属性にバインドする必要があると仮定していましたが、アンカー要素には
disabled
プロパティを持たないからです。
を見て、その使い方を検討しました。
pointer-events: none
を使うことも考えましたが、これでは私のスタイルである
cursor: not-allowed
が機能しなくなります -- そしてこれは要求の一部です。
どのように解決するのですか?
指定方法
pointer-events: none
を指定すると、マウス入力は無効になりますが、キーボード入力は無効にはなりません。例えば、ユーザはまだリンクにタブで移動して
Enter
キーまたは (Windows では)
≣メニュー
キーです。を傍受することで、特定のキーストロークを無効にすることができます。
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 Zöchbauer氏の回答のように、通常と無効の2つのリンクを作成し、それぞれを
*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;
}
関連
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] どのDOM要素にフォーカスがあるかを調べるには?
-
[解決済み] HTMLの "role "属性は何のためにあるのですか?
-
[解決済み] DOM要素が現在のビューポートで表示されているかどうかを確認するにはどうすればよいですか?
-
[解決済み] ボディの高さをブラウザの高さの100%にする
-
[解決済み] Webサイトのブラウザタブアイコン(ファビコン)を追加する方法を教えてください。
-
[解決済み] アンカー内にdivを置くことは正しいことですか?
-
[解決済み】PromiseとObservablesの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ローカルリソースのロードが許可されていない問題を解決する
-
[解決済み] HTMLで複数選択を許さないリストボックスを作るには?
-
[解決済み] チェックボックスとそのラベルをクロスブラウザーで一貫して揃える方法
-
[解決済み] リンクを新しいタブまたはウィンドウで開く[重複]。
-
[解決済み] 複数のノンブレイキングスペース("nbsp")ではなく、タブスペースを使用しますか?
-
[解決済み] CSSだけでリンクを無効化する方法
-
[解決済み] 静的な HTML ページにファビコンを追加する
-
[解決済み] Do I use <img>, <object>, or <embed> for SVG files?
-
[解決済み] hrefタグを無効にする
-
[解決済み] Angular 2のパッシブリンク - <a href="">相当