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是特殊的支票只抛出在开发模式下,如果您查看和模型由于某些原因可能不同步。
回答:
尝试使用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
以上是 Angular2,错误:检查后表达式已更改。先前的值:'未定义'。当前值:'0 的全部内容, 来源链接: utcz.com/qa/262653.html