2016-10-13 3 views
0
<div *ngIf="clientTable" [@clientTableState]="testAnimate.state" class="clientdata"> 
    <div class="table-holder"> 
    <table id="header-fixed"><a (click)="closeClientTable()" class="table-close"><i class="ion-close-circled"></i></a> 
     <tr> 
     <th colspan="8">{{ clientTableHeader }}</th> 
     </tr> 
     <tr> 
     <th rowspan="2">Bookie</th> 
     <th colspan="3">Payment</th> 
     <th colspan="3">Bookie</th> 
     <th rowspan="2">Balance</th> 
     </tr> 
    </table> 
    </div> 
</div> 

@Component({ 
    templateUrl: 'app/html-templates/bookiedata.html', 
    styleUrls: ['css/templates.css'], 
    animations: [ 
    trigger('clientTableState', [ 
     state('inactive', style({ 
      opacity: 0 
     })), 
     state('active', style({ 
      opacity: 1 
     })), 
     transition('inactive => active', animate('0.8s ease-in-out')), 
     transition('active => inactive', animate('0.8s ease-in-out')) 
    ]) 
    ] 
}) 

государственный метод ПереключениеAngular2 одушевленные не работает с ngIf

// declaration 
clientTable: boolean = false 
testAnimate: any = { state: 'inactive' } 

// method 
toggleState(){ 
    this.testAnimate.state == 'inactive' ? this.testAnimate.state = 'active' : this.testAnimate.state = 'inactive' 
    this.clientTable = true 
} 

Однако, если я удалю * ngIf ng2-animation будет работать.

Теоретически, ngIf проверяет, и если это правда. Элемент будет доступен в DOM. Основываясь на моем понимании, элемент должен также иметь состояние неактивное, так как оно не запускалось. После нажатия триггера элемент будет доступен и будет иметь состояние active.

Но почему у него нет анимации?

Есть ли какая-нибудь работа вокруг, которая позволит мне использовать ngIf и анимацию?

+0

Довольно уверен, что одушевленный работает с * ngIf, потому что вся точка с одушевленным является анимация, когда элементы уходят и входят в DOM. – Chrillewoodz

+0

@Chrillewoodz Вы пробовали? У меня нет никаких ошибок, но я не работаю нормально. Кроме того, в https://angular.io/docs/ts/latest/guide/animations.html#!#example-entering-and-leaving, 'они не используют ngIf' –

+0

Только что обновил мой ответ на http: //stackoverflow.com/questions/36417931/angular-2-ngif-and-css-transition-animation –

ответ

1

Он должен работать с этим,

toggleState(){ 

    this.clientTable = true   //<<<===changed order. 

    this.testAnimate.state == 'inactive' ? this.testAnimate.state = 'active' : this.testAnimate.state = 'inactive' 

} 

Если он не работает (обходной)

toggleState(){ 

    this.clientTable = true   //<<<===changed order. 

    setTimout(()=>{ 
     this.testAnimate.state == 'inactive' ? this.testAnimate.state = 'active' : this.testAnimate.state = 'inactive' 
    },2000) 

} 
+0

Спасибо за помощь. Обходной путь работает. –

+0

Добро пожаловать @HermLuna – micronyks

Смежные вопросы