Je sais qu'il y a beaucoup de questions déjà posées dans stackoverflow et j'ai essayé différentes solutions pour éviter l'erreur d'exécution, mais aucune d'entre elles ne fonctionne pas pour moi.ExpressionChangedAfterItHasBeenCheckedError: L'expression a été modifiée après sa vérification. Valeur précédente: 'undefined'
composants et Code Html
export class TestComponent implements OnInit, AfterContentChecked {
@Input() DataContext: any;
@Input() Position: any;
sampleViewModel: ISampleViewModel = { DataContext: : null, Position: null };
constructor(private validationService: IValidationService, private modalService: NgbModal, private cdRef: ChangeDetectorRef) {
}
ngOnInit() {
}
ngAfterContentChecked() {
debugger;
this.sampleViewModel.DataContext = this.DataContext;
this.sampleViewModel.Position = this.Position;
}
<div class="container-fluid sample-wrapper text-center" [ngClass]="sampleViewModel.DataContext?.Style?.CustomCssClass +' samplewidget-'+ sampleViewModel.Position?.Columns + 'x' + sampleViewModel.Position?.Rows">
//some other html here
</div>
S'il vous plaît Remarque: Ce composant est chargé dynamiquement à l'aide DynamicComponentLoader
Après mon tir de détresse, je l'ai identifié quelques questions
tout d'abord ce composant enfant est chargé dynamiquement en utilisant DynamicComponentResolver et passer les valeurs d'entrée comme ci-dessous
ngAfterViewInit() {
this.renderWidgetInsideWidgetContainer();
}
renderWidgetInsideWidgetContainer() {
let component = this.storeFactory.getWidgetComponent(this.dataSource.ComponentName);
let componentFactory = this._componentFactoryResolver.resolveComponentFactory(component);
let viewContainerRef = this.widgetHost.viewContainerRef;
viewContainerRef.clear();
let componentRef = viewContainerRef.createComponent(componentFactory);
debugger;
(<IDataBind>componentRef.instance).WidgetDataContext = this.dataSource.DataContext;
(<IDataBind>componentRef.instance).WidgetPosition = this.dataSource.Position;
}
Même si je changeais mon html composant enfant comme ci-dessous, je reçois ce même error.Just ajouter un angle ngclass attribut
<div class="container-fluid ds-iconwidget-wrapper text-center" [ngClass]="Sample">
</div>
Mon databinding et tout travaillent fine.Do je dois faire quoi que ce soit sur le composant parent? J'ai déjà essayé tous les événements lifecyle dans le composant enfant
Comment ajouter 'TestComponent'? –
@Maximus comme composant d'entrée – JEMI
@Maximus J'ai essayé en appelant this.cdRef.detectChanges(); explicitement mais ne fonctionne pas – JEMI