Ich habe eine eckige 2-Komponente für ein Modal erstellt, und diese Komponente erweitert eine modale Basisklasse, die eine boolesche Eigenschaft enthält, die angibt, ob das Modal geöffnet ist oder nicht. Ich muss diese Eigenschaft dann in einem * ngIf in der Vorlage verwenden, um das Modal anzuzeigen/auszublenden.Angular 2 mit Eigenschaft in erweiterter Klasse für ngIf funktioniert nicht
Das Problem ist, dass ich die folgende Fehlermeldung erhalten, wenn ich meine offene Methode nennen:
Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'
Meine modale Komponente:
@Component({
selector: 'cmg-modal-create',
template: require('./modal.create.html')
})
export class ModalCreateComponent extends Modal {
constructor() {
super();
}
}
Meine Komponentenvorlage:
<div class='modal-overlay' *ngIf='isModalOpen'></div>
<section id='modal-create' class='modal' *ngIf='isModalOpen'>
// modal body
</section>
Die Modal Klasse:
export class Modal {
protected isModalOpen: boolean = false;
protected open(): void {
this.isModalOpen = true;
}
protected close(): void {
this.isModalOpen = false;
}
}
schließlich in einem Top-Level-Komponente nenne ich die Modalverben offene Methode
Top-Level-Komponente:
@Component({
directives: [ ModalCreateComponent ],
selector: 'cmg-project-card',
template: require('./project-card.html')
})
export class ProjectCardComponent {
@ViewChild('createModal') createModal: any;
private openModal(): void {
this.createModal.open();
}
}
Top-Level-Komponenten-Template:
<cmg-modal-create #createModal></cmg-modal-create>
Wo wird 'ProjectCardComponent.openModal()' aufgerufen? – hendrix