Меня озадачило то, что я, возможно, считаю ошибкой в модуле анимации в Angular 4. С анимацией в Angular 2.x я сделал анимацию, которая анимируется с высоты * на фиксированную высоту. Это отлично работало в Angular 2. С другой стороны, при использовании Angular 4 высота элемента, к которому применена анимация, становится ошибочной при повторном запуске анимации до ее завершения. Подстановочный знак (*) — это то, что, по-видимому, вызывает проблему. Вот демонстрационный фрагмент, который может воспроизвести проблему. Ошибка может возникнуть, если дважды щелкнуть элемент, когда он находится в состоянии *-height:
import { Component } from '@angular/core';
import { trigger, animate, state, transition, style } from '@angular/animations';
@Component({
selector: 'app-root',
template: `
<h1 [@toggleAnimation]="isEnabled" (click)="isEnabled = isEnabled === 'active' ? 'inactive' : 'active'" style="background: blue">
{{title}}
</h1>`,
animations:
[
trigger('toggleAnimation', [
state('active', style({
height: '*',
})),
state('inactive', style({
height: '600px',
})),
transition('active <=> inactive', animate('500ms ease-in-out'))
])
]
})
export class AppComponent {
title = 'app works!';
isEnabled = 'inactive';
}
Что-то не так с тем, как я анимирую высоту, используя значение подстановочного знака, или что-то не так с тем, как ведет себя высота подстановочного знака?