【发布时间】:2020-04-03 23:53:33
【问题描述】:
我的应用程序中有标签,活动标签必须对应于用户的级别。我创建了一个 viewChild 来添加它的活动类但我没有成功,并且出现以下错误:
ERROR TypeError: Cannot read property 'querySelector' of undefined
at TrainingComponent.push../src/app/views/training/training.component.ts.TrainingComponent.ngAfterViewInit
我的组件:
@ViewChild('tabExplorator') tabExplorator: ElementRef;
@ViewChild('tabEspecialist') tabEspecialist: ElementRef;
constructor(public timeguard:TimeguardService, public router: Router, public progressbar:ProgressBarService, public geo: GeolocationService, public dl: DatalayerService<GameDimensionSet>, public database: DatabaseService < Fase > , public auth: AuthService) {}
ngAfterViewInit () {
//assigning an element to a variable
let tabExplorator = this.tabExplorator.nativeElement.querySelector('tabExplorator')
let tabEspecialist = this.tabEspecialist.nativeElement.querySelector('tabEspecialist')
if(this.auth.User.nivel == 'EXPLORADOR' && tabExplorator.classList.contains('active')){
tabExplorator.classList.remove('active')
tabEspecialist.classList.add('active')
}
}
我的 HTML:
<ul class="tabs ranking-letra-tabs tabs-icon">
<li class="tab col s3 cor-explorador alinha-texto">
<a href="#ranking-nivel1" #tabExplorator>
<div>
<i class="material-icons cor-estrelas tabs-icon">star</i>
</div>
<div class="">
{{NIVEL1}}
</div>
</a>
</li>
<li class="tab col s3 cor-especialista alinha-texto">
<a href="#ranking-nivel2" #tabEspecialist>
<div>
<i class="material-icons cor-estrelas estrela-tabs-1">star</i>
<i class="material-icons cor-estrelas estrela-tabs-2">star</i>
</div>
<div>
{{NIVEL2}}
</div>
</a>
</li>
</ul>
根据文档,我正在使用物化:
"显示与该 id 选项卡对应的选项卡内容"
instance.select('tab_id');
有帮助吗?
【问题讨论】:
标签: angular typescript tabs materialize viewchild