2017-12-21 28 views
3

각도 응용 프로그램에서 날짜 선택 도구 구성 요소를 만들었습니다. * ngIf 내부에서 사용할 때 ExpressionChangedAfterItHasBeenCheck 오류가 발생합니다. 하자, 부모 입력 필드로 두 구성 요소 P와 C. P 사용하고 있습니다.ExpressionChangedAfterItHasBeenCheck 각도 구성 요소 사용 중 오류

<INPUT [p]=" '' "> 

INPUT 다음에 하위 드롭 다운이 추가됩니다. P는 * ngIf 내에서 동적으로 생성되면

<DIV> 
// drop-down code 
</DIV> 

, 나는 이러한 오류 ExpressionChangedAfterItHasBeenCheck을 얻었다.

답변

3

실행중인 각도 응용 프로그램은 구성 요소 트리입니다. 변경되는 동안 각도 지정된 순서대로 수행되는 다음의 동작으로 구성되어, 각 구성 요소에 대한 검사 수행 모든 하위 구성 요소

1.update 바인딩 속성/지시문 2.call ngOnInit 모든 자식 OnChanges 및 ngDoCheck주기 후크 부품/지시자는 각 조작 후 하위 구성 요소의 모든 하위 구성 요소 5.call ngAfterViewInit주기 후크/지시

현재 성분 4.run 변화 검출 3.update의 DOM이 각도는 수행 할 수있는 값에는 어떤 기억 수술. 구성 요소보기의 oldValues ​​속성에 저장됩니다. 모든 구성 요소에 대한 점검이 완료되면 각도.

그래서 마지막에, 우리는 각도 것이 동기 만들기 위해 우리가 setTimeout inside lifecycle hooks.

ngOnInit() { 
    setTimeout(() => { 
    // Your Code 
    }); 
} 
ngAfterViewInit() { 
    setTimeout(() => { 
    // Your Code 
    }); 
} 
을 사용하여 그것을 해결하기 위해 필요