url#scrollPoint 로 이동했을때 페이지 로드 시
scrollPoint영역으로 스크롤되도록 만들고 싶었다
*ngIf가 많은 페이지라 페이지 로드 후 스크롤을 이동시켜야 하는데 시점을 잡기가 어려웠다.
// test.component.html
<!-- 생략 -->
<div id="scrollPoint"></div>
<!-- 생략 -->
angular lifecycle hook 중 ngAfterViewInit를 사용했다.
그럼에도 dom에 그려지는 시간이 좀 걸리는 지 스크롤이 제대로 이동하지않아
setTimeout을 걸었다.
돌아가긴하지만 아쉬운 코드.
// test.component.ts
// ngAfterViewInit 사용
ngAfterViewInit() {
this.route.fragment.subscribe((fragment: string) => {
if (fragment) {
setTimeout(() => {
const elem = document.getElementById(fragment).offsetTop;
window.scrollTo({ top: elem, behavior: 'smooth' });
}, 1000);
}
});
}
'개발 > Angular' 카테고리의 다른 글
[Angular] @ViewChild를 활용한 스크롤 이벤트 처리 (0) | 2024.06.17 |
---|---|
[Angular] 같은 컴포넌트를 사용하는 페이지 이동 시 화면 리로드 처리 ( 슬릭 데이터 리로드) (1) | 2024.01.03 |
[Angular] navigateByUrl, URL인코딩 없이 페이지 이동시키기 (0) | 2023.08.18 |
[개선] Angular 검색 기록 남겨 이전 페이지로 이동 (history back) (0) | 2023.07.21 |