พบคุณสมบัติสังเคราะห์ @panelState โปรดรวม“ BrowserAnimationsModule” หรือ“ NoopAnimationsModule” ในแอปพลิเคชันของคุณด้วย '


148

ฉันอัพเกรดโครงการ Angular 4 โดยใช้เมล็ดเชิงมุมและตอนนี้ได้รับข้อผิดพลาด

พบคุณสมบัติสังเคราะห์ @panelState โปรดระบุ "BrowserAnimationsModule" หรือ "NoopAnimationsModule" ในแอปพลิเคชันของคุณ

สกรีนช็อตของข้อผิดพลาด

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ข้อความแสดงข้อผิดพลาดบอกอะไรฉันอย่างแน่นอน


1
ช่วยฉันด้วย - github.com/mgechev/angular-seed/issues/1880
FugueWeb

คำตอบ:


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
@crossRTDid คุณนำเข้าแอนิเมชันของคุณหรือไม่ถ้าคุณสร้างมันในไฟล์อื่น?
Ploppy

165

นี้ข้อผิดพลาดมักจะเข้าใจผิด

คุณอาจBrowserAnimationsModuleจะลืมที่จะนำเข้า แต่นั่นก็ไม่ใช่ปัญหาของฉัน ฉันกำลังนำเข้าBrowserAnimationsModuleในรูAppModuleทอย่างที่ทุกคนควรทำ

ปัญหาคือสิ่งที่ไม่เกี่ยวข้องกับโมดูลอย่างสมบูรณ์ ผมได้รับแรงบันดาล*ngIfในแม่แบบองค์ประกอบ แต่ฉันได้ลืมที่จะพูดถึงมันใน สำหรับชั้นส่วนประกอบ@Component.animations

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

ถ้าคุณใช้ภาพเคลื่อนไหวในแม่คุณยังต้องแสดงรายการแอนิเมชั่ว่าในองค์ประกอบของanimationsเมตาดาต้า ...ทุกครั้ง


คุณต้องใช้แองกูลาร์รุ่นเก่าข้อผิดพลาดแตกต่างกัน:Error: The provided animation trigger "myAnimation" has not been registered!
Ploppy

2
อย่างแน่นอน แต่ในขณะเดียวกันสำหรับผู้ที่ติดอยู่กับฉันและค้นหาเฉพาะคำแนะนำด้านบนคำตอบของฉันจะช่วยให้คุณลองอีกครั้ง
Ward

1
ฉันยังได้รับข้อผิดพลาดที่ทำให้เข้าใจผิด (ใช้เชิงมุม 7.1)
Andi-lo

1
ฉันกำลังใช้ Angular 8.0.0 และรับข้อยกเว้นนั้น แต่กำหนดภาพเคลื่อนไหวในองค์ประกอบตามที่คุณพูดว่าแก้ไขทุกอย่างขอบคุณ
Alireza

1
เช่นเดียวกันกับ @Alireza ฉันได้รับข้อผิดพลาดเดียวกันกับ Angular 8.0 ภาพเคลื่อนไหวที่รวมอยู่ในส่วนประกอบทำงาน
trungk18

19

BrowserAnimationsModuleฉันวิ่งเข้าไปในปัญหาที่คล้ายกันเมื่อฉันพยายามที่จะใช้ ขั้นตอนต่อไปนี้แก้ไขปัญหาของฉัน:

  1. ลบnode_modules dir
  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 แต่มันรู้สึกเหมือนการต่อสู้ที่ไม่มีที่สิ้นสุดเพื่อแก้ไขปัญหาหลังจากปัญหาและสะดุดไปกับการทำงานรอบ ๆ เช่นนี้ มันเป็นเรื่องที่ไม่เป็นมิตรกับผู้ใช้
Mike Gledhill

@ MikeGledhill Yup พวกเขาได้ดูดอย่างสมบูรณ์ทำให้การอัปเกรดเป็นเรื่องง่ายในปีที่ผ่านมา มันช่างเป็นประสบการณ์ที่น่าสังเวช
Jackson Bray

อย่างที่ฉันค้นพบในวันนี้ปัญหานี้จะเกิดขึ้นก็ต่อเมื่อโครงการของคุณอยู่บนพื้นฐานของการเริ่มต้นอย่างรวดเร็วเชิงมุม cli เชิงมุมใหม่ไม่ได้ใช้ไฟล์กำหนดค่าชนิดนี้
wodzu

6

สิ่งที่ฉันต้องทำก็คือติดตั้ง

npm install @angular/animations@latest --save  

แล้วนำเข้า

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

ลงในapp.module.tsไฟล์ของคุณ


-1; นี้ส่วนใหญ่เป็นเพียงซ้ำคำตอบที่ได้รับการยอมรับที่ถูกโพสต์ไม่กี่เดือนก่อนหน้านี้ แต่ยังคิดถึงออกในขั้นตอนของการส่งผ่านBrowserAnimationsModuleไปยัง@NgModuleมัณฑนากร นอกจากนี้ยังเหมือนกันกับคำตอบของ vikviner ที่โพสต์เมื่อสองสามชั่วโมงก่อนหน้านี้
Mark Amery

4
มันไม่ใช่คำตอบของทุกคนที่ซ้ำกัน คำตอบของฉันคือสิ่งที่ฉันทำ @NgModule decorator ถูกต้องแล้ว เหมือนกันเสมือนเพิ่มขึ้นถึงข้อสรุปแม่คำตอบ คุณไม่จำเป็นต้องตั้งค่าสถานะ
SamYah

6

สำหรับฉันฉันพลาดคำสั่งนี้ในมัณฑนากร @Component: แอนิเมชั่น: [yourAnimation]

เมื่อฉันเพิ่มคำสั่งนี้ข้อผิดพลาดไป (เชิงมุม 6.x)


ที่จริงมีหน้าเกี่ยวกับเรื่องนี้ในเอกสารเชิงมุม ฉันควรมี RTFM
Alexandre Germain

2

ปัญหาของฉันคือ @ angular / platform-browser ของฉันเป็นรุ่น 2.3.1

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

การอัพเกรดเป็น 4.4.6 ได้ทำการหลอกลวงและเพิ่ม / ขยายโฟลเดอร์ภายใต้ node_modules / @ angular / platform-browser


และนั่นก็จบลงด้วยการอัพเกรดโครงการเชิงมุมทั้งหมดของฉันเป็น 4.4.6
Tanel Jõeäär

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>

แต่หลังจากฉันลบวงเล็บทั้งหมดทำงานได้ดี (In Angular 9.0.1):

<div @animation></div>

0

ฉันพบข้อผิดพลาดด้านล่าง:

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

ฉันทำตามคำตอบที่ได้รับการยอมรับโดย Ploppy และแก้ไขปัญหาของฉันได้

นี่คือขั้นตอน:

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 @ ล่าสุด --save

นำเข้า {BrowserAnimationsModule} จาก '@ angular / platform-browser / animation';

มันใช้งานได้สำหรับฉัน


-1; นี้ส่วนใหญ่เป็นเพียงซ้ำคำตอบที่ได้รับการยอมรับที่ถูกโพสต์ไม่กี่เดือนก่อนหน้านี้ แต่ยังคิดถึงออกในขั้นตอนของการส่งผ่านBrowserAnimationsModuleไปยัง@NgModuleมัณฑนากร
Mark Amery

-3

เพียงเพิ่ม .. นำเข้า {BrowserAnimationsModule} จาก '@ angular / platform-browser / animation';

นำเข้า: [.. BrowserAnimationsModule

]

ในไฟล์ app.module.ts

ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง .. npm install @ angular / animations @ latest --save


-1 สำหรับการทำซ้ำเนื้อหาที่มีคำตอบอื่น ๆ โหลดอยู่ที่นี่แล้ว
Mark Amery

-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" ไม่ใช่สิ่งและไม่มีความชัดเจนในสิ่งที่คุณพยายามแสดงที่นี่เนื่องจากคุณเพียงแค่ให้ข้อความแสดงข้อผิดพลาดและบล็อกโค้ดที่อ่านยากโดยไม่มีคำอธิบายมากนัก
Mark Amery

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

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

2
โปรดระบุคำอธิบายสำหรับรหัสของคุณ การโพสต์โค้ดด้วยตัวเองไม่ได้ช่วยใครนอกจาก OP และพวกเขาไม่เข้าใจว่าทำไมมันถึงใช้งานได้ (หรือไม่)
jhpratt

แม้ว่าข้อมูลโค้ดนี้อาจช่วยแก้ปัญหาได้ แต่ก็ไม่ได้อธิบายว่าทำไมหรือตอบคำถามอย่างไร โปรดระบุคำอธิบายสำหรับรหัสของคุณเนื่องจากช่วยปรับปรุงคุณภาพการโพสต์ของคุณได้อย่างแท้จริง โปรดจำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตและคนเหล่านั้นอาจไม่ทราบสาเหตุของการแนะนำรหัสของคุณ
Balagurunathan Marimuthu

-1; นี่เป็นเพียงการทำซ้ำเนื้อหาจากคำตอบที่ยอมรับ
Mark Amery
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.