Angular 4 анимация в высоту *

Меня озадачило то, что я, возможно, считаю ошибкой в ​​​​модуле анимации в 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';
}

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


person Tallang    schedule 10.04.2017    source источник


Ответы (1)


Похоже на ошибку: https://github.com/angular/angular/issues/15507< /а>

По-видимому, ! является «секретным» значением в 4.2.0-rc.1, которое, кажется, решает проблему, но, похоже, это не то, что официально поддерживается или будет поддерживаться в официальном выпуске.

https://plnkr.co/edit/pZamSqPX9Vb4J6JL721u?p=preview показывает, что это работает в 4.2.0-rc.1 с !, а затем просто перейдите к config.js и измените на 4.0.0 и измените ! обратно на *, чтобы увидеть, как он снова глючит.

person Jens Bodal    schedule 04.06.2017