私はngForで動的に構築されたモバイルナビを持っています。そのnavでは、いくつかの項目がドロップダウンします。デスクトップでは、これはホバーで処理されます。しかしモバイルでは、私はクリックイベントを作成しました。 a:activeを使用することは、私のUXチームのオプションではありません。ユーザーはナビゲーション項目をクリックしてドロップダウンを開いて閉じることができます。私が抱えている問題は、ngForがドロップダウンを持つアイテムだけではなく、これまでのnavアイテムにクリックを置くことです。クリックすると、ドロップダウンですべての要素にクラスが追加されるので、すべてのドロップダウンが開かれます。あなたがクリックしたものの子です。ngForのすべての要素にクラスを追加しないようにするにはどうしたらいいですか?
はここでここで私は呼び出しています私の方法で私のhtml
<div id="mobNav" [ngClass]="{'toggleNav': isClassVisible}">
<ul class="navList">
<li class="root" *ngFor='let item of topMenu' (click)="toggleClass()" [ngClass]="{'more' : !item.url}">
<a class="txt">{{item.name}}</a>
<!--Mobile-->
<ul *ngIf="!item.url" class="dropDown" [ngClass]="{'toggleMobileNav' : isMobileVisible}">
<li *ngFor="let sItem of findChildren(item.tabID) " class="txt ">
<a href="{{ sItem.url }} ">{{ sItem.name }}</a>
</li>
</ul>
</li>
</ul>
</div>
です。ここでは特別な何もあなたが対応する要素に<li>
から(click)
を移動し、その後、あなたのケースのために別のHTMLを作成し、ビットにHTMLを変更することができます
toggleClass(){
this.isMobileVisible = !this.isMobileVisible;
if(this.isMobileVisible === true){
console.log("class added");
} else{
console.log("class not added");
}
}
ありがとうございましたそんなに。魅力的な作品 – FoffySkrimshaw