2017-12-18 24 views
0

carousel은 특정 이미지의 수를 얻기 위해 activeSlideIndex을 사용했습니다. 그래서 나는Angular2, Error : 확인 후 표현식이 변경되었습니다. 이전 값 : 'undefined'. 현재 값 : '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 = "images"대신'* ngIf = "page.activeSlideIndex" –

+0

예를 사용하십시오. 문제가 그 activateSlideIndex – Bhrungarajni

0

모든 코드가 표시 될 때 정확한 문제를 얘기하기 어렵다, 그러나 나는이 오류를 설명하는이 놀라운 기사를 읽고 제안하고 왜 https://blog.angularindepth.com/everything-you-need-to-know-about-the-expressionchangedafterithasbeencheckederror-error-e3fd9ce7dbb4

ExpressionChangedAfterItHasBeenCheckedError 만 발생합니다 특별 검사입니다 일어나고있다 on dev mode. 어떤 이유로보기 및 모델이 동기화되지 않을 수 있습니다.

+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에서 재생산하고 URL을 공유하십시오. 그런 식으로 문제를 분명히 이해하는 것이 좋습니다. – Jana