2016-10-05 2 views
2

내 Angular 2 RC-6 응용 프로그램에서 예쁜 페이지를 애니메이션으로 만들 수 있습니다. 이 기사의 예가 나와 있습니다. https://www.bennadel.com/blog/3139-experimenting-with-conditional-enter-leave-animations-in-angular-2-rc-6.htm 그러나 내부 변환이 변경됩니다. 라우터 구성 요소, 일명 응용 프로그램 페이지를 만들 필요가 있습니다.각도 2의 애니메이션 상태 변경을 적용하는 방법

내 애니메이션 설정은 다음과 같습니다

host: { 
    '[@routeAnimation]': 'true', 
    '[style.display]': "'block'", 
    '[class]':"'animate-jump-off'" 
    }, 
    animations: [ 
    trigger('routeAnimation', [ 
     state('in', style({transform: 'translateX(0)'})), 
      transition('void => prev', [ 
      style({transform: 'translateX(-100%)'}), 
      animate(300) 
      ]), 
      transition('prev => void', [ 
      animate(1000, style({transform: 'translateX(100%)'})) 
      ]), 
     transition('void => next', [ 
     style({transform: 'translateX(100%)'}), 
     animate(300) 
     ]), 
     transition('next => void', [ 
     animate(1000, style({transform: 'translateX(-100%)'})) 
     ]) 


    ]) 

나는이 전환이 - 다음 다시. 내가 템플릿

<div class="card-container" [@routeAnimation] = "direction" > 

에 변수를 넣어 변화를 정의하고 구성 요소 클래스에 전용 변수를 추가합니다. 난의 setTimeout 사용

emitter = EmitterService.get("direction"); 
    goNext():void { 
    this.emitter.emit({'direction':'next'}); 
    console.log('next'); 
    setTimeout(() => { 

     //this.router.navigate(['/questions/1']); 
    }, 100) 

: 는 I 그 goNext() 함수가 실행되고, i는 다음 페이지로의 링크가 약간의 내부 구성 요소의 새로운 상태를

this.emitter.subscribe(msg => { 
     this.direction = (msg.direction); 
     console.log(msg.direction); 
    }); 

을 방출 EventEmitter를 사용하기로 결정 딜레이가 메시지를 가로 채고 그의 방향 상태를 '다음'으로 전환 할 것을 지연하지만 애니메이션에 적용되지 않는 값입니다. 동일한 인터셉터가 다음 페이지에 있으므로이 페이지 방향 상태도 '다음'으로 전환되어야합니다.

내가 지금 가지고있는 것. 방향 값이 변경되고 있지만 애니메이션이 나타나지 않습니다. (구성 요소 생성자에서 direction = 'none'을 정의합니다.)

내가 현재하고있는 페이지와 다음 페이지 모두에 방향 변경을 적용하는 방법을 잘못 설명합니다. , 또는 각 페이지의 라우팅 변경을 감지하는 다른 방법이 있습니까?

+0

나는 비슷한 문제가 http://stackoverflow.com/questions/40020101/ng2-animation-with-deferred-component-data-change –

답변

관련 문제