Angular2,错误:检查后表达式已更改。先前的值:'未定义'。当前值:'0
我已经使用了carousel
,因为我已经使用activeSlideIndex
来获取特定图像的编号。所以,我得到一个错误控制台Angular2,错误:检查后表达式已更改。先前的值:'未定义'。当前值:'0
Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined'. Current value: '0'.
HTML部分:
<carousel class="carousel slide"[(activeSlide)]="page.activeSlideIndex">
<slide *ngFor="let image of images; let i = index ">
<p>Image {{i+1}}</p>
<img src="{{image.image}}" >
<p >
<input type="file" name="file" id="file" (change)="readUrl($event)" />
<label (click)="changed(page.activeSlideIndex)">Change</label>
</p>
</slide>
</carousel>
TS:
images:any = [{image :'img1.jpg', change:'change'},{image: 'img2.jpg', change:'add'},{image:'img3.jpg', change:'edit'},{image:'im4.jpg',change:'delete' }];
changed(index){
console.log(index);
}
尝试添加*ngIf="page.activeSlideIndex && images"
这样的:
<carousel *ngIf="page.activeSlideIndex && images" class="carousel slide" [(activeSlide)]="page.activeSlideIndex">
<slide *ngFor="let image of images; let i = index ">
<p>Image {{i+1}}</p>
<img src="{{image.image}}" >
<p >
<input type="file" name="file" id="file" (change)="readUrl($event)" />
<label (click)="changed(page.activeSlideIndex)">Change</label>
</p>
</slide>
</carousel>
这是很难说确切的问题时,将显示不是所有的代码,但我建议阅读这个惊人的文章描述该错误以及为什么它正在发生https://blog.angularindepth.com/everything-you-need-to-know-about-the-expressionchangedafterithasbeencheckederror-error-e3fd9ce7dbb4
ExpressionChangedAfterItHasBeenCheckedError是特殊的支票只抛出在开发模式下,如果您查看和模型由于某些原因可能不同步。
感谢您的回复,但我没有办法解决 – Bhrungarajni
尝试使用ChangeDetectorRef来告诉角度图像数据集有新的更改。
所以最初设定
image.any = [];
constructor(private cdr: ChangeDetectorRef) {}
ngAfterViewInit() {
this.image.any = [{image :'img1.jpg', change:'change'},{image: 'img2.jpg', change:'add'},{image:'img3.jpg', change:'edit'},{image:'im4.jpg',change:'delete' }];
this.cdr.detectChanges();
}
检查此以供参考:https://stackblitz.com/edit/angular-pybs8e?file=app%2Fapp.component.ts
感谢您的回复@jana,但我无法解决那个错误 – Bhrungarajni
可能那么这个问题是不涉及你的图像对象。尝试类似的解决方案,在其中定义“page.activeSlideIndex”。如果问题仍然存在... ...在stackblitz中重现并分享网址..这样最好能清楚地理解你的问题。 – Jana
感谢您的答复,但我也加入 – Bhrungarajni
确定后得到同样的错误,你的错误被绑定到'activateSlideIndex'吧?对不起,我没有看到它。而不是* ngIf =“图片”,请尝试使用'* ngIf =“page.activeSlideIndex”' –
是的,确切地说。问题是与这activateSlideIndex – Bhrungarajni