Angular标签页内容显示异常,寻求问题排查帮助
问题分析与解决方案
首先看你遇到的显示异常,大概率是因为**标签的默认导航行为**导致的!当你点击标签里的元素时,浏览器会触发默认的页面导航动作(哪怕没有href属性),这会导致组件重新初始化,selectedTab被重置为初始值'one',所以看起来切换标签后显示状态不对。
另外还有个小拼写错误:第三个标签内容里的thrid应该是third,不过这不是显示异常的核心原因。
修复方案
你可以通过以下两种方式解决:
方案1:阻止标签的默认行为
在每个的点击事件里添加$event.preventDefault(),直接阻止浏览器的默认导航动作:
<div class="secondary-tabs"> <ul class="tabs"> <li id="tab-one" (click)="selectTab('one')" [class.active]="selectedTab == 'one'"> <a (click)="$event.preventDefault()"> <div class="tab__heading" title="One">One</div> </a> </li> <li id="tab-two" (click)="selectTab('two')" [class.active]="selectedTab == 'two'"> <a (click)="$event.preventDefault()"> <div class="tab__heading" title="Two">Two</div> </a> </li> <li id="tab-three" (click)="selectTab('three')" [class.active]="selectedTab == 'three'"> <a (click)="$event.preventDefault()"> <div class="tab__heading" title="Three">Three</div> </a> </li> </ul> <div class="tab-content"> <div id="tab-one-content" [class.tab-pane.active]="selectedTab == 'one'">first tab </div> <div id="tab-two-content" [class.tab-pane.active]="selectedTab=='two'">second tab </div> <div id="tab-three-content" [class.tab-pane.active]="selectedTab=='three'">third tab </div> </div> </div>
方案2:移除多余的标签
既然你已经在
<div class="secondary-tabs"> <ul class="tabs"> <li id="tab-one" (click)="selectTab('one')" [class.active]="selectedTab == 'one'"> <div class="tab__heading" title="One">One</div> </li> <li id="tab-two" (click)="selectTab('two')" [class.active]="selectedTab == 'two'"> <div class="tab__heading" title="Two">Two</div> </li> <li id="tab-three" (click)="selectTab('three')" [class.active]="selectedTab == 'three'"> <div class="tab__heading" title="Three">Three</div> </li> </ul> <div class="tab-content"> <div id="tab-one-content" [class.tab-pane.active]="selectedTab == 'one'">first tab </div> <div id="tab-two-content" [class.tab-pane.active]="selectedTab=='two'">second tab </div> <div id="tab-three-content" [class.tab-pane.active]="selectedTab=='three'">third tab </div> </div> </div>
你的Component代码逻辑是完全没问题的,不需要修改。
内容的提问来源于stack exchange,提问作者Red Cricket
相关产品推荐
相关产品推荐

