Ich weiß, dass im Stack-Overflow bereits viele gleiche Fragen gestellt wurden, und habe verschiedene Lösungen ausprobiert, um den Laufzeitfehler zu vermeiden, aber keine davon funktioniert für mich.
Komponenten- und HTML-Code
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>
Bitte beachten Sie: Diese Komponente wird dynamisch mit DynamicComponentLoader geladen
Nach meiner Fehlersuche habe ich einige Probleme festgestellt
Zunächst wird diese untergeordnete Komponente dynamisch geladen, indem DynamicComponentResolver verwendet und die Eingabewerte wie folgt übergeben werden
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;
}
Selbst wenn ich das HTML meiner untergeordneten Komponente wie unten geändert habe, wird der gleiche Fehler angezeigt. Fügen Sie einfach ein eckiges ngclass-Attribut hinzu
<div class="container-fluid ds-iconwidget-wrapper text-center" [ngClass]="Sample">
</div>
Meine Datenbindung und alles funktionieren einwandfrei. Muss ich irgendetwas an der übergeordneten Komponente tun? Ich habe bereits alle Lebenszyklusereignisse in der untergeordneten Komponente ausprobiert
TestComponent
?