У меня есть родительский компонент, и я передаю некоторый HTML из него в общий дочерний компонент, используя @ViewChild().
Когда дочерний компонент загружает всплывающее окно. Консоль выдает ошибку ниже.
"ExpressionChangedAfterItHasBeenCheckedError: выражение изменилось после проверки. Предыдущее значение: "ngIf: undefined". Текущее значение: "ngIf: это описание". грязно проверено. Было ли оно создано в хуке обнаружения изменений ?"
Я использую { NgbModal } из '@ng-bootstrap/ng-bootstrap';
Это код.
Обновление. Этот родительский компонент вызывается как app-parent-component в другом родительском HTML-файле.
Родительский компонент
@ViewChild('templateToLoad') templateToLoad;
constructor(private modalService: NgbModal, private ChangeDetector: ChangeDetectorRef) {
}
ngOnInit() {
this.openPopup();
}
ngAfterViewInit() {
this.ChangeDetector.detectChanges();
}
private openPopup() {
const modalPrompt = this.modalService.open(CommonChildModalComponent, {windowClass: 'modal-prompt fade-in-down'});
modalPrompt.componentInstance.title = 'Title';
modalPrompt.componentInstance.contentTemplate = this.templateToLoad;
modalPrompt.componentInstance.originContext = this;
modalPrompt.componentInstance.description = 'ABC';
Родительский HTML
<ng-template #templateToLoad>
<div class="someClass">This data will be shown on Popup without any error.
</div>
</ng-template>
Компонент CommonChildPopup
@Input() title?: string;
@Input() description?: string;
@Input() originContext: any;
@Input() contentTemplate?: any;
constructor(public activeModal: NgbActiveModal) {
}
ngOnInit() {
console.log('I am here in CommonModalComponent ngOnInit');
}
CommonChildPopup HTML
<div class="modal-header">
<h4 class="modal-title">{{title}}</h4>
</div>
<div class="modal-body pb-3" [class.dimmer]="simulateLoading">
<p *ngIf="description">{{description}}</p>
<ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
Приведенная выше ошибка консоли относится к этой строке ngIf="description". Если я удалю эту строку, такая же ошибка появится для следующей строки. Пожалуйста помоги.
ngAfterContentChecked()
- person CruelEngine   schedule 15.03.2018