2017-12-18 99 views
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); 
     } 

回答

0

尝试添加*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>

+0

感谢您的答复,但我也加入 – Bhrungarajni

+0

确定后得到同样的错误,你的错误被绑定到'activateSlideIndex'吧?对不起,我没有看到它。而不是* ngIf =“图片”,请尝试使用'* ngIf =“page.activeSlideIndex”' –

+0

是的,确切地说。问题是与这activateSlideIndex – Bhrungarajni

0

这是很难说确切的问题时,将显示不是所有的代码,但我建议阅读这个惊人的文章描述该错误以及为什么它正在发生https://blog.angularindepth.com/everything-you-need-to-know-about-the-expressionchangedafterithasbeencheckederror-error-e3fd9ce7dbb4

ExpressionChangedAfterItHasBeenCheckedError是特殊的支票只抛出在开发模式下,如果您查看和模型由于某些原因可能不同步。

+0

感谢您的回复,但我没有办法解决 – Bhrungarajni

0

尝试使用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

+0

感谢您的回复@jana,但我无法解决那个错误 – Bhrungarajni

+0

可能那么这个问题是不涉及你的图像对象。尝试类似的解决方案,在其中定义“page.activeSlideIndex”。如果问题仍然存在... ...在stackblitz中重现并分享网址..这样最好能清楚地理解你的问题。 – Jana

相关问题