2016-07-20 2 views
1

테이블이 스크롤 가능한 div 내에있을 때 주어진 테이블의 머리글 (th)을 고정 된 상태로 유지하는 각도 2 지시문이 있습니다. 셀의 데이터 크기에 따라 열 머리글의 크기를 조정하며 그 반대의 경우도 마찬가지입니다. Angular 2 RC1까지는 제대로 작동했지만 RC4로 업그레이드 한 후에 작동을 멈췄습니다.Angular2 AfterViewChecked RC4에서 바인딩이 완료되면 지시문에서 실행되지 않음

잠시 후 프레임 워크에 의해 트리거 된 "AfterViewChecked"이벤트 수가 줄어들 었음을 알았습니다. 아마도 수정 된 문제가 원인 일 것입니다. 문제는 이제 내 지시문이 더 이상 테이블 헤더의 크기를 조정하기 위해 재 계산 논리를 트리거하지 않는다는 것입니다.

재 계산 프로세스를 트리거하기 위해 부모의 지시문 테이블에서 이벤트를 바인딩하거나 캡처 할 수 있습니까? 나는 기본적으로 머리글 또는 열 중 하나의 크기를 조정 폭에 따라 할 헤더 계산을 수행 할 논리를 호출 할 경우 이러한 이벤트 내에서

export class TableFixedHeaderDirective implements AfterViewChecked, AfterViewInit 
... 
ngAfterViewInit(): void ... 
ngAfterViewChecked(): void ... 
onWindowResize(): void ... 
... 

은 다음과 같습니다

지시어 코드는 더 많거나 적은 같은 것입니다 표시되는 데이터의

답변

2

각도 지시문에는보기가 없으므로보기 관련 생명주기 후크가 모두 존재하지 않으므로 작동하지 않습니다.

는 각도가 데이터 바인딩 입력 속성을 초기화 한 후 지침/구성 요소를 초기화 docs

지침 및 구성 요소


ngOnInit
를 참조하십시오.

ngOnChanges 응답 후 데이터 바인딩 된 입력 속성을 설정합니다. 메서드는 현재 값과 이전 값의 변경 객체를받습니다.

ngDoCheck
검색 및 각도가 또는 자체 검색하지 않습니다 수 변경에 따라 행동. 모든 변경 감지 실행이라고합니다.

ngOnDestroy Angular 직전 정리는 지시문/구성 요소를 파괴합니다. 관찰 기록 삭제 및 이벤트 핸들러 분리로 메모리 누출을 피하십시오. 해당 뷰에

구성 요소에만

ngAfterContentInit
각도 프로젝트 후 외부 콘텐츠.

는 코너 검사 후
를 ngAfterContentChecked 그것 뷰에 투영되는 외부 콘텐츠 바인딩.

ngAfterViewInit After Angular는 구성 요소의 뷰를 만듭니다.

는 코너 검사 후 구성 요소의 시각 (들)의 바인딩
을 ngAfterViewChecked.

+0

요점은 어떻게 든 호출된다는 것입니다. 페이지가 완전히로드 된 후 페이지의 아무 곳이나 클릭하면 지시문의 ngAfterViewChecked 이벤트가 트리거되고 예상대로 계산됩니다. 문제는 데이터가 테이블에 바인딩되고 새 행이 추가 된 후에 해고되어야한다는 것입니다. 1 set 후에 ChangeDetectorRef.detectChanges()를 호출하여 ** settimeout **을 사용하여 작동하도록 만들었지 만 좋은 해결책은 아닌 것 같습니다. –

+0

당신이 옳습니다! 워드 프로세서 오해의 소지가 있으며 잘못된 것입니다 ... 또는 그 각도에 문제가 있지만 잘못된 워드 프로세서에 내기. 어쨌든 구성 요소와 지시문 사이에서 통신 할 수 있지만 자세한 내용을 제공 할 수 있다면 더 많은 코드를 제공하여 구조를 볼 수 있습니다. 참고로 지시문에서 변경 감지 전략, 이것은 호스트 구성 요소에 의해 설정됩니다 ... –

+1

나는 문제를 열었고, 그들이 말하는 것을 볼 수있게하고 그에 따라 내 대답을 편집 할 것입니다. [링크] (https://github.com/angular/angular/issues/10221) –

관련 문제