Как создать анимационные переходы между классами scss/css в Angular?

Я создаю сообщение, которое меняет стили в зависимости от состояния страницы.

Если страница содержит ошибку, я хочу, чтобы сообщение имело красный фон. Если не по ошибке, я хочу, чтобы у сообщения был зеленый фон. Эти цвета фона соответствуют глобальным стилям CSS, поэтому анимация должна извлекать стили из файла стилей компонента.

До сих пор я достигал этого путем жесткого кодирования "backgroundColor: red" и "backgroundColor: green" в каждом из состояний анимации. Однако это решение также переопределяет стили в файле.scss компонента.

Шаблон:

<div [@hasError]="errorCondition" class="myClass" [myClass.error]="errorCondition"></div>

Стили scss:

.myClass {
  background-color: green;

  &.error {
    background-color: red;
  }
}

Составная часть:

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.scss' ],
  animations: [
    trigger('hasError', [
      state(
        'true',
        style({
          backgroundColor: '*'
        })
      ),
      state(
        'false',
        style({
          backgroundColor: '*'
        }),
      ),
      transition('false<=>true', [animate('0.4s')]),
    ])
  ]
})

Я использую подстановочный оператор (*), потому что я хочу, чтобы каждое переходное состояние получало backgroundColor из стиля элемента, который устанавливается классом "error".

Тем не менее, никакой анимации не происходит вообще... Я думаю, это потому, что стиль элемента изменяется в [myClass.error]="errorCondition" до запуска анимации оператор подстановки возвращает одинаковый стиль для обоих состояний.

Кто-нибудь знает или может объяснить взаимодействие между анимацией и классами CSS элементов?

Спасибо

0 ответов

Другие вопросы по тегам