테이블이 스크롤 가능한 div 내에있을 때 주어진 테이블의 머리글 (th)을 고정 된 상태로 유지하는 각도 2 지시문이 있습니다. 셀의 데이터 크기에 따라 열 머리글의 크기를 조정하며 그 반대의 경우도 마찬가지입니다. Angular 2 RC1까지는 제대로 작동했지만 RC4로 업그레이드 한 후에 작동을 멈췄습니다.Angular2 AfterViewChecked RC4에서 바인딩이 완료되면 지시문에서 실행되지 않음
잠시 후 프레임 워크에 의해 트리거 된 "AfterViewChecked"이벤트 수가 줄어들 었음을 알았습니다. 아마도 수정 된 문제가 원인 일 것입니다. 문제는 이제 내 지시문이 더 이상 테이블 헤더의 크기를 조정하기 위해 재 계산 논리를 트리거하지 않는다는 것입니다.
재 계산 프로세스를 트리거하기 위해 부모의 지시문 테이블에서 이벤트를 바인딩하거나 캡처 할 수 있습니까? 나는 기본적으로 머리글 또는 열 중 하나의 크기를 조정 폭에 따라 할 헤더 계산을 수행 할 논리를 호출 할 경우 이러한 이벤트 내에서
export class TableFixedHeaderDirective implements AfterViewChecked, AfterViewInit
...
ngAfterViewInit(): void ...
ngAfterViewChecked(): void ...
onWindowResize(): void ...
...
은 다음과 같습니다
지시어 코드는 더 많거나 적은 같은 것입니다 표시되는 데이터의
요점은 어떻게 든 호출된다는 것입니다. 페이지가 완전히로드 된 후 페이지의 아무 곳이나 클릭하면 지시문의 ngAfterViewChecked 이벤트가 트리거되고 예상대로 계산됩니다. 문제는 데이터가 테이블에 바인딩되고 새 행이 추가 된 후에 해고되어야한다는 것입니다. 1 set 후에 ChangeDetectorRef.detectChanges()를 호출하여 ** settimeout **을 사용하여 작동하도록 만들었지 만 좋은 해결책은 아닌 것 같습니다. –
당신이 옳습니다! 워드 프로세서 오해의 소지가 있으며 잘못된 것입니다 ... 또는 그 각도에 문제가 있지만 잘못된 워드 프로세서에 내기. 어쨌든 구성 요소와 지시문 사이에서 통신 할 수 있지만 자세한 내용을 제공 할 수 있다면 더 많은 코드를 제공하여 구조를 볼 수 있습니다. 참고로 지시문에서 변경 감지 전략, 이것은 호스트 구성 요소에 의해 설정됩니다 ... –
나는 문제를 열었고, 그들이 말하는 것을 볼 수있게하고 그에 따라 내 대답을 편집 할 것입니다. [링크] (https://github.com/angular/angular/issues/10221) –