'Menemukan properti sintetis @panelState. Harap sertakan "BrowserAnimationsModule" atau "NoopAnimationsModule" di aplikasi Anda. '


148

Saya memutakhirkan proyek Angular 4 menggunakan benih sudut dan sekarang mendapatkan kesalahan

Menemukan properti sintetis @panelState. Harap sertakan "BrowserAnimationsModule" atau "NoopAnimationsModule" di aplikasi Anda.

Cuplikan layar kesalahan

Bagaimana saya bisa memperbaikinya? Apa sebenarnya pesan kesalahan yang memberitahu saya?


Jawaban:


227

Pastikan @angular/animationspaket diinstal (misalnya dengan menjalankan npm install @angular/animations). Lalu, di app.module.ts Anda

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

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

Bagaimana saya dapat memeriksa apakah sudah diinstal pada PC atau tidak.?
Tuan dunia

2
npm list --depth=0daftar paket yang diinstal pada proyek Anda
Ploppy

1
Apa hasil yang diharapkan jika sudah diinstal.? saya hanya dapat melihat 2 ini:├── @angular/platform-browser@4.3.5 ├── @angular/platform-browser-dynamic@4.3.5
Mr seluruh dunia

7
Saya telah menginstal semua paket untuk animasi dan juga mengimpor "BrowserAnimationsModule" di AppModule. Tapi masih ada kesalahan.
crossRT

1
@crossRTApakah Anda juga mengimpor animasi jika Anda membuatnya dalam file yang berbeda?
Ploppy

165

Ini pesan kesalahan sering menyesatkan .

Anda mungkin lupa mengimpor BrowserAnimationsModule. Tapi itu bukan masalah saya . Saya mengimpor BrowserAnimationsModuledi root AppModule, seperti yang seharusnya dilakukan semua orang.

Masalahnya adalah sesuatu yang sama sekali tidak terkait dengan modul. Saya sedang menganimasikan*ngIf dalam komponen template tetapi saya lupa menyebutkannya di @Component.animations untuk kelas komponen .

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

Jika Anda menggunakan animasi dalam templat, Anda juga harus mencantumkan animasi itu dalam animationsmetadata komponen ... setiap kali .


Anda harus menggunakan versi Angular yang lama, kesalahannya berbeda:Error: The provided animation trigger "myAnimation" has not been registered!
Ploppy

2
Benar. Tetapi sementara itu, bagi mereka yang terjebak seperti saya dan hanya menemukan saran di atas, jawaban saya memberi Anda satu hal lagi untuk dicoba.
Bangsal

1
Saya juga mendapatkan kesalahan menyesatkan (menggunakan sudut 7.1)
Andi-lo

1
Saya menggunakan Angular 8.0.0 dan mendapatkan pengecualian itu tetapi mendefinisikan animasi dalam komponen seperti yang Anda katakan memperbaiki semuanya, terima kasih.
Alireza

1
Sama dengan @Alireza, saya mendapatkan kesalahan yang sama pada Angular 8.0. Animasi yang disertakan dalam komponen berfungsi.
trungk18

19

Saya mengalami masalah serupa, ketika saya mencoba menggunakan BrowserAnimationsModule. Langkah-langkah berikut memecahkan masalah saya:

  1. Hapus dir node_modules
  2. Bersihkan cache paket Anda menggunakan npm cache clean
  3. Jalankan salah satu dari dua perintah ini yang tercantum di sini untuk memperbarui paket yang ada

Jika Anda mengalami 404 kesalahan suka

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

tambahkan entri berikut ke mapdalam system.config.js Anda :

'@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 menyediakan solusi untuk masalah github ini .


2
Terima kasih atas info ini ... Saya menghargai ini adalah rilis baru Angular, tapi rasanya seperti perjuangan yang tidak pernah berakhir untuk menyelesaikan masalah demi masalah, dan menemukan masalah-masalah seperti ini. Ini adalah hal yang sangat tidak ramah pengguna.
Mike Gledhill

@MikeGledhill Yup, mereka tentu saja benar-benar tersedot dalam membuat hal-hal mudah untuk ditingkatkan selama setahun terakhir. Sudah pengalaman yang menyedihkan.
Jackson Bray

seperti yang saya temukan hari ini, masalah ini hanya terjadi jika proyek Anda didasarkan pada seed quickstart sudut. cli sudut baru tidak menggunakan file konfigurasi semacam ini
wodzu

6

Yang harus saya lakukan adalah menginstal ini

npm install @angular/animations@latest --save  

dan kemudian impor

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

ke dalam app.module.tsfile Anda .


-1; ini sebagian besar hanya duplikat jawaban yang diterima yang diposting beberapa bulan sebelumnya, tetapi juga melewatkan langkah melewati BrowserAnimationsModuleke @NgModuledekorator. Ini juga hampir identik dengan jawaban vikvincer yang diposting beberapa jam sebelumnya.
Mark Amery

4
itu bukan duplikat dari jawaban siapa pun. jawaban saya adalah apa yang saya lakukan. @NgModule dekorator adalah def benar. identik virtual menambahkan hingga jawaban konklusif ma guy. kamu tidak perlu menandai.
SamYah

6

Bagi saya, saya melewatkan pernyataan ini di dekorator @Component: animations: [yourAnimation]

Setelah saya menambahkan pernyataan ini, kesalahan hilang. (Angular 6.x)


Sebenarnya, ada halaman tentang ini di dokumentasi sudut . Saya harus memiliki RTFM
Alexandre Germain

2

Masalah saya adalah bahwa @ angular / platform-browser saya ada di versi 2.3.1

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

Upgrade ke 4.4.6 melakukan trik dan menambahkan / folder animasi di bawah node_modules / @ angular / platform-browser


Dan itu juga akhirnya meningkatkan seluruh proyek Angular saya ke 4.4.6
Tanel Jõeäär

2

Setelah memasang modul animasi maka Anda membuat file animasi di dalam folder aplikasi Anda.

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%)' }))
            ])
        ]);
    }

Kemudian Anda mengimpor file animasi ini ke komponen Anda.

Di file component.ts Anda

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

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

Jangan lupa untuk mengimpor animasi di app.module.ts Anda

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

2

Animasi harus diterapkan pada komponen tertentu.

EX: Menggunakan arahan animasi di komponen lain dan disediakan di komponen lain.

CompA --- @Component ({



animasi: [animasi]}) CompA --- @Component ({



animasi: [animasi] <=== ini harus disediakan dalam komponen bekas})


1

Bagi saya itu karena saya memasukkan nama animasi ke dalam tanda kurung.

<div [@animation]></div>

Tetapi setelah saya melepas braket semuanya bekerja dengan baik (In Angular 9.0.1):

<div @animation></div>

0

Saya mendapat kesalahan di bawah ini:

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

Saya mengikuti jawaban yang diterima oleh Ploppy dan itu menyelesaikan masalah saya.

Berikut langkah-langkahnya:

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.

Itu akan menyelesaikan kesalahan. Selamat coding !!


-3

Coba ini

npm instal @ angular / animations @ latest --save

impor {BrowserAnimationsModule} dari '@ angular / platform-browser / animations';

ini bekerja untuk saya.


-1; ini sebagian besar hanya duplikat jawaban yang diterima yang diposting beberapa bulan sebelumnya, tetapi juga melewatkan langkah melewati BrowserAnimationsModuleke @NgModuledekorator.
Mark Amery

-3

Cukup tambahkan .. impor {BrowserAnimationsModule} dari '@ angular / platform-browser / animations';

impor: [.. BrowserAnimationsModule

],

dalam file app.module.ts.

pastikan Anda telah menginstal .. npm install @ angular / animations @ latest --save


-1 untuk duplikat konten yang sudah ada di banyak jawaban lain di sini.
Mark Amery

-3

Pembaruan untuk angularJS 4:

Kesalahan: (SystemJS) Kesalahan XHR (404 Tidak Ditemukan) memuat http: // localhost: 3000/node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations

Larutan:

**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" bukanlah suatu hal, dan tidak jelas apa sebenarnya yang ingin Anda ekspresikan di sini karena Anda hanya memberikan pesan kesalahan dan blok kode yang sulit dibaca tanpa banyak kalimat penjelasan.
Mark Amery

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

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

2
Harap berikan penjelasan untuk kode Anda. Memposting kode sendiri tidak membantu siapa pun kecuali OP, dan mereka tidak mengerti mengapa kode itu berfungsi (atau tidak).
jhpratt

Meskipun potongan kode ini dapat menyelesaikan masalah, itu tidak menjelaskan mengapa atau bagaimana ia menjawab pertanyaan. Harap sertakan penjelasan untuk kode Anda, karena itu sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, dan orang-orang itu mungkin tidak tahu alasan untuk saran kode Anda
Balagurunathan Marimuthu

-1; ini hanya menggandakan konten dari jawaban yang diterima.
Mark Amery
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.