'Найдено синтетическое свойство @panelState. Пожалуйста, включите «BrowserAnimationsModule» или «NoopAnimationsModule» в свое приложение. '


148

Я обновил проект Angular 4 с помощью angular-seed и теперь получаю ошибку

Нашел синтетическое свойство @panelState. Пожалуйста, включите "BrowserAnimationsModule" или "NoopAnimationsModule" в ваше приложение.

Скриншот ошибки

Как я могу это исправить? Что именно говорит сообщение об ошибке?


Ответы:


227

Убедитесь, что @angular/animationsпакет установлен (например, запустив npm install @angular/animations). Затем в вашем app.module.ts

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@NgModule({
  ...,
  imports: [
    ...,
    BrowserAnimationsModule
  ],
  ...
})

Как я могу проверить, установлен ли он на ПК или нет.?
Господин по всему миру

2
npm list --depth=0выводит список установленных пакетов в вашем проекте
Ploppy

1
Каков ожидаемый результат, если он уже установлен? я могу видеть только эти 2:├── @angular/platform-browser@4.3.5 ├── @angular/platform-browser-dynamic@4.3.5
Мистер по всему миру

7
Я установил все пакеты для анимации, а также импортировал «BrowserAnimationsModule» в AppModule. Но все равно получаю ошибку.
CrossRT

1
@crossRT. Вы также импортировали анимацию, если создали ее в другом файле?
Плоппи

165

Это сообщение об ошибке часто вводит в заблуждение .

Вы можете забыли импортировать BrowserAnimationsModule. Но это была не моя проблема . Я импортировал BrowserAnimationsModuleв корень AppModule, как и все должны делать.

Проблема была в том, что совершенно не связано с модулем. Я анимировал *ngIfв шаблоне компонента, но я забыл упомянуть его в @Component.animations классе компонента .

@Component({
  selector: '...',
  templateUrl: './...',
  animations: [myNgIfAnimation] // <-- Don't forget!
})

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


Вы должны использовать старую версию Angular, ошибка другая:Error: The provided animation trigger "myAnimation" has not been registered!
Ploppy

2
Абсолютно. Но между тем, для тех, кто застрял на месте и нашел только совет выше, мой ответ дает вам еще одну попытку.
Ward

1
Я также получил эту вводящую в заблуждение ошибку (используя угловой 7.1)
Анди-Ло

1
Я использую Angular 8.0.0 и получаю это исключение, но определяю анимацию в компоненте, как вы сказали, все исправлено, спасибо.
Алиреза

1
То же самое с @Alireza, я получил ту же ошибку на Angular 8.0. Включены анимации в компоненте работ.
trungk18

19

Я столкнулся с аналогичными проблемами, когда я пытался использовать BrowserAnimationsModule. Следующие шаги решили мою проблему:

  1. Удалите node_modules реж
  2. Очистите кеш вашего пакета, используя npm cache clean
  3. Запустите одну из этих двух команд, перечисленных здесь, чтобы обновить существующие пакеты

Если вы испытываете 404 ошибок, таких как

http://.../node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations

добавьте следующие записи mapв ваш system.config.js :

'@angular/animations': 'node_modules/@angular/animations/bundles/animations.umd.min.js',
'@angular/animations/browser':'node_modules/@angular/animations/bundles/animations-browser.umd.js',
'@angular/platform-browser/animations': 'node_modules/@angular/platform-browser/bundles/platform-browser-animations.umd.js'

naveedahmed1 предоставил решение этой проблемы github .


2
Спасибо за эту информацию ... Я ценю, что это новый релиз Angular, но это похоже на бесконечную борьбу, чтобы обойти проблему за проблемой, и наткнуться на обходные пути, подобные этим. Это серьезно недружелюбный пользователь.
Майк Гледхилл,

@MikeGledhill Да, они, конечно же, полностью упустили возможность упростить обновление за последний год. Это был несчастный опыт.
Джексон Брей,

как я узнал сегодня, эта проблема возникает, только если ваш проект основан на угловом начальном семени. новый угловой cli не использует этот тип конфигурационного файла
wodzu

6

Все, что мне нужно было сделать, это установить

npm install @angular/animations@latest --save  

а затем импортировать

import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 

в ваш app.module.tsфайл.


-1; это в основном просто дублирует принятый ответ , который был размещен на пару месяцев раньше, но и пропускает стадию прохождения BrowserAnimationsModuleк @NgModuleдекоратору. Он также практически идентичен ответу Виквинчера, опубликованному несколькими часами ранее.
Марк Амери

4
это не дубликат чьего-либо ответа. мой ответ - то, что я сделал. Декоратор @NgModule определен правильно. виртуальная идентичность складывается в окончательные ответы, сделанные парнем. тебе не нужно отмечать.
SamYah


2

Моя проблема заключалась в том, что мой @ angular / platform-browser был на версии 2.3.1

npm install @angular/platform-browser@latest --save

Обновление до 4.4.6 сделал трюк и добавил папку / animations в node_modules / @ angular / platform-browser


И это также
привело

2

После установки модуля анимации вы создаете файл анимации в папке вашего приложения.

router.animation.ts

import { animate, state, style, transition, trigger } from '@angular/animations';
    export function routerTransition() {
        return slideToTop();
    }

    export function slideToRight() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateX(-100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateX(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(100%)' }))
            ])
        ]);
    }

    export function slideToLeft() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateX(100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateX(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(-100%)' }))
            ])
        ]);
    }

    export function slideToBottom() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateY(-100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateY(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(100%)' }))
            ])
        ]);
    }

    export function slideToTop() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateY(100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateY(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(-100%)' }))
            ])
        ]);
    }

Затем вы импортируете этот файл анимации в любой компонент.

В вашем файле component.ts

import { routerTransition } from '../../router.animations';

@Component({
  selector: 'app-test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.scss'],
  animations: [routerTransition()]
})

Не забудьте импортировать анимацию в ваш app.module.ts

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

2

Анимация должна быть применена к конкретному компоненту.

EX: Использование директивы анимации в другом компоненте и в другом.

CompA --- @Component ({



анимации: [анимация]}) CompA --- @Component ({



анимации: [анимация] <=== это должно быть предоставлено в используемом компоненте})


1

Для меня это было потому, что я поместил название анимации в квадратные скобки.

<div [@animation]></div>

Но после того, как я снял кронштейн, все заработало нормально (в Angular 9.0.1):

<div @animation></div>

0

Я получил ниже ошибки:

Found the synthetic property @collapse. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.

Я следую принятому ответом Плоппи, и это решило мою проблему.

Вот шаги:

1.
    import { trigger, state, style, transition, animate } from '@angular/animations';
    Or 
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

2. Define the same in the import array in the root module.

Это решит ошибку. Удачного кодирования!


-3

Попробуй это

npm install @ angular / animations @ latest --save

импортировать {BrowserAnimationsModule} из '@ angular / platform-browser / animations';

это работает для меня.


-1; это в основном просто дублирует принятый ответ , который был размещен на пару месяцев раньше, но и пропускает стадию прохождения BrowserAnimationsModuleк @NgModuleдекоратору.
Марк Амери

-3

Просто добавьте .. import {BrowserAnimationsModule} из '@ angular / platform-browser / animations';

импорт: [.. BrowserAnimationsModule

],

в файле app.module.ts.

убедитесь, что вы установили .. npm install @ angular / animations @ latest --save


-1 для дублирования контента, который уже загружен другими ответами здесь.
Марк Амери

-3

Обновление для angularJS 4:

Ошибка: (SystemJS) ошибка XHR (404 не найдено) при загрузке http: // localhost: 3000/node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations

Решение:

**cli:** (command/terminal)
npm install @angular/animations@latest --save

**systemjs.config.js** (edit file)
'@angular/animations': 'npm:@angular/animations/bundles/animations.umd.js',
'@angular/animations/browser': 'npm:@angular/animations/bundles/animations-browser.umd.js',
'@angular/platform-browser/animations': 'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js',

**app.module.ts** (edit file)
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
@NgModule({
  imports:      [ BrowserModule,BrowserAnimationsModule ],
...

2
-1; «angularJS 4» - это не вещь, и неясно, что именно вы пытаетесь выразить здесь, поскольку вы просто предоставляете сообщение об ошибке и трудно читаемый кодовый блок без какого-либо предложения.
Марк Амери

-3
--
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
---

@NgModule({
  declarations: [   --   ],
  imports: [BrowserAnimationsModule],
  providers: [],
  bootstrap: []
})

2
Пожалуйста, предоставьте объяснение вашего кода. Публикация кода самостоятельно не помогает никому, кроме OP, и они не понимают, почему он работает (или не работает).
jhpratt

Хотя этот фрагмент кода может решить проблему, он не объясняет, почему и как он отвечает на вопрос. Пожалуйста, включите объяснение вашего кода, так как это действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин, по которым вы предлагаете код
Балагурунатан Маримуту

-1; это просто дублирует контент из принятого ответа.
Марк Амери
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.