Angular 2在扩展类中使用属性ngIf不起作用
问题描述:
我已经为模式创建了角2组件,并且此组件扩展了一个基本模式类,该类包含指示模式是否打开的布尔属性。然后,我需要在模板的* ngIf中使用此属性来显示/隐藏模式。Angular 2在扩展类中使用属性ngIf不起作用
的问题是,我收到以下错误,当我打电话给我开的方法:
Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'
我的模态分量:
@Component({
selector: 'cmg-modal-create',
template: require('./modal.create.html')
})
export class ModalCreateComponent extends Modal {
constructor() {
super();
}
}
我的组件模板:
模架等级:
export class Modal {
protected isModalOpen: boolean = false;
protected open(): void {
this.isModalOpen = true;
}
protected close(): void {
this.isModalOpen = false;
}
}
最后一个顶级组件内我所说的情态动词open方法
顶级组件:
@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();
}
}
顶级组件模板:
<cmg-modal-create #createModal></cmg-modal-create>
答
此错误消息意味着,假设你没有打角本身就是一个错误,那东西简称为,用于检索渲染到视图的数据正在更改该值。要正确地修复它,你需要找到它,并改变它以消除其副作用。
答
导入以下:
import { ChangeDetectorRef } from '@angular/core';
然后加入ChangeDetectorRef
到你的构造和使用方法detectChanges()
改变布尔值的时候,是这样的:
this.changeDetectionRef.detectChanges();
“ProjectCardComponent.openModal()”在哪里调用? – hendrix