깜놀하는 해므찌로

ngFor speed controll 반복문 속도 조절 Directive 예시 본문

IT

ngFor speed controll 반복문 속도 조절 Directive 예시

agnusdei1207 2023. 5. 27. 15:38
반응형
SMALL
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';

@Directive({
  selector: '[ngForDelay]'
})
export class NgForDelayDirective {
  @Input('ngForDelay') set ngForDelay(value: any[]) {
    value.forEach((item: any, index: number) => {
      setTimeout(() => {
        this.viewContainer.createEmbeddedView(this.templateRef, {
          $implicit: item,
          index: index
        });
      }, index * 1000); // 인덱스 * 1초
    });
  }

  constructor(
    private templateRef: TemplateRef<any>,
    private viewContainer: ViewContainerRef
  ) {}
}

1. 디렉티브 파일

 

 

<ng-container *ngFor="let menu of menus; index as i">
  <div
    *ngIf="menu.data!['menu']"
    [ngForDelay]="menus"
    @baseIntroTopAnimation
    class="flex font-semibold transition-all cursor-pointer select-none py-7 px-7 active:text-gray-300 active:scale-90 hover:text-gray-300"
    (click)="handleMenu(menu)"
    [ngClass]="isScrollMoved ? 'text-[#131313]' : 'text-white'"
  >
    {{ menu.data!['label'] }}
  </div>
</ng-container>

2. 템플릿 예시

3. ng-container 를 사용해서 반복문을 돕니다

4. 내부 div 태그에 [ngForDelay] 디렉티브를 사용합니다.

 

반응형
LIST