我的父组件中有一个div,它使用[ngClass]根据某些条件应用不同的CSS类,并根据子组件的输出装饰器检查该条件的值,并且遇到以下控制台错误:
我的父组件html div:-
<div [ngClass]="{'alerton1': isAlertClass1 ,'alerton2': isAlertClass2,'alerton3': isAlertClass3,'alerton4': isAlertClass4,
'alerton5': isAlertClass5,'alerton6': isAlertClass6 ,'alerton7': isAlertClass7, 'alertoff': isAlertClass}">
<!-- top navbar-->
<app-header class="topnavbar-wrapper"(activityData)="GetActivityDetail($event)"></app-header>
我的父组件Ts代码:-
GetActivityDetail(classname) {
switch (classname) {
case '1': {
this.isAlertClass1 = true;
this.isAlertClass2 = false;
this.isAlertClass3 = false;
this.isAlertClass4 = false;
this.isAlertClass5 = false;
this.isAlertClass6 = false;
this.isAlertClass7 = false;
this.isAlertClass = false;
break;
}
case '2': {
this.isAlertClass1 = false;
this.isAlertClass2 = true;
this.isAlertClass3 = false;
this.isAlertClass4 = false;
this.isAlertClass5 = false;
this.isAlertClass6 = false;
this.isAlertClass7 = false;
this.isAlertClass = false;
break;
}
default: {
this.isAlertClass = true;
this.isAlertClass1 = false;
this.isAlertClass2 = false;
this.isAlertClass3 = false;
this.isAlertClass4 = false;
this.isAlertClass5 = false;
this.isAlertClass6 = false;
this.isAlertClass7 = false;
break;
}
}
我的子组件条件代码:-
switch (i) {
case 1: {
this.activityData.emit('1');
break;
}
case 2: {
this.activityData.emit('2');
break;
}
default: {
this.activityData.emit('0');
break;
}
}
您可以使用ChangeDetectorRef基类
它提供变更检测功能。更改检测树收集所有要检查更改的视图。使用这些方法可以在树中添加和删除视图,启动更改检测以及将视图明确标记为脏视图,这意味着它们已更改并且需要重新呈现。
import { ChangeDetectorRef } from '@angular/core';
constructor(protected cdr: ChangeDetectorRef) {}
ngOnInit() {
this.cdr.detectChanges();
}