[解決済み] AngularでKendo Tabstripのタブを閉じるボタンを実装する方法
2022-02-16 01:10:50
質問
を持っています。
kendo-tabstrip
で、タブを閉じる機能を追加する必要があります。ディレクティブを作成しました。
myCloseTab
に適用し、それを
button
要素の内部で
kendoTabTitle
ディレクティブで、その要素のクリックイベントを正常にリッスンできるようになりました。ここまでは順調です。
しかしながら
kendoTabStrip
要素を呼び出すことができます。
kendoTabStrip.remove(i)
で、ここで
i
はタブのインデックスです。参照できるのは
this.elementRef
しかし、DOMツリーを歩くのは理想的なAngularのアプローチとは思えません。
Kendo TabStripです。
<kendo-tabstrip>
<kendo-tabstrip-tab
*ngFor="let tab of tabs"
[selected]="tab.selected"
[disabled]="tab.disabled">
<ng-template kendoTabTitle >
<span>{{ tab.title }}</span>
<button myCloseTab></button>
</ng-template>
<ng-template kendoTabContent>
<div>{{ tab.data }</div>
</ng-template>
</kendo-tabstrip-tab>
</kendo-tabstrip>
myCloseTab ディレクティブ。
import { Directive, ElementRef, Renderer2, HostListener } from '@angular/core';
@Directive({
selector: '[myCloseTab]'
})
export class CloseTabDirective {
@HostListener('click', ['$event']) onClick() {
console.log(this.elementRef);
}
constructor(private renderer: Renderer2, private elementRef: ElementRef) {
this.renderer.addClass(this.elementRef.nativeElement, 'closeIcon');
}
}
解決方法は?
このように、アクセスしたい要素で参照を作ることができます。
<kendo-tabstrip #reference>
<kendo-tabstrip-tab
*ngFor="let tab of tabs"
[selected]="tab.selected"
[disabled]="tab.disabled">
<ng-template kendoTabTitle >
<span>{{ tab.title }}</span>
<button myCloseTab></button>
</ng-template>
<ng-template kendoTabContent>
<div>{{ tab.data }</div>
</ng-template>
</kendo-tabstrip-tab>
そして、.ts ファイルにアクセスするには、次のようにします。
@ViewChild('reference') tabStrip : KendoTabStripConstructor;
を実行すると、remove メソッドを含む tabStrip オブジェクトのメソッドにアクセスできるようになります。個人的にはKendoを使ったことはないのですが、すでにprimengのコンポーネントの一つでこの方法を使い、うまくいっています。この方法は、primengのコンポーネントで使用したことがありますが、うまくいきました。
関連
-
[解決済み] @viewChildが機能しない - プロパティnativeElementがundefinedで読み込めない
-
[解決済み】アンギュラーコンポーネントにサービスを注入しようとするとエラー "EXCEPTION: Can't resolve all parameters for component"、なぜ?
-
[解決済み】angularでpreflightのレスポンスがHTTP okステータスにならない。
-
[解決済み] Angular 2で簡単なアコーディオンを作成するにはどうすればよいですか?
-
[解決済み] <selector>' が Angular コンポーネントの場合、それがこのモジュールの一部であることを確認する。
-
[解決済み] ng serve または firebase serve を終了させる方法
-
[解決済み] Typescript - コードが TS1128: Declaration or Statement expected というエラーでビルドに失敗するが、コードを提供すると期待通りに実行される。
-
[解決済み] Uncaught (in promise): Ionic 2でcordova_not_available。
-
[解決済み] Angular2 Selectorが、ネストしたComponentのどの要素にもマッチしない。
-
[解決済み] Angular 2の「コンポーネント」は既知の要素ではありません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】serveコマンドを使用するには、angular-cliプロジェクト内にいる必要があります。
-
[解決済み】angularJS2プロジェクトでsystemjs.config.jsファイルをどこに置くか/見つけるか?
-
[解決済み】angularでpreflightのレスポンスがHTTP okステータスにならない。
-
[解決済み] 型 '{}' は型 '{ title: string; text: string; }' に代入できません。
-
[解決済み] Angular 2のコンポーネントプロパティにデフォルト値を設定する方法は?
-
[解決済み] Uncaught (in promise): Ionic 2でcordova_not_available。
-
[解決済み] typescriptを使用して、同じhtml DOM要素で「シングルクリック」と「ダブルクリック」を処理する方法:Angular 2または4?
-
[解決済み] AngularのngClassとトグルクラスのクリックイベント
-
[解決済み] Angular2において、テンプレートを必要としないコンポーネントがありますが、テンプレートエラーが発生します。
-
[解決済み] ローカルホストが私のアンギュラーアプリに対して無効な応答を送信しました。