2017-08-02 4 views
0

Angular Version 4.3.2Angular 4 „Export 'AnimationEvent' nicht in '@ Winkel/Animationen'

@ Winkel/cli Version 1.2.6

Ich verwende Typoskript (v2.4.2 gefunden wurde) für eine Komponente, die

import {animate, AnimationEvent, state, style, transition, trigger} from '@angular/animations'; 

ich Warnungen erhalten, die sagen

„export 'AnimationEvent' nicht gefunden wurde '@ Winkel/Animationen' importiert

Die anderen Funktionen (Animation, Status, Stil usw.) lösen keine Warnungen aus. Ich entdeckte, dass die @angular Code in node_modules/@angular/animations.d.ts

export * from './public_api'; 

und ./public_api.d.ts umfasst hat

export * from './src/animations'; 

und ./src/animations.d .ts hat

export { AnimationBuilder, AnimationFactory } from './animation_builder'; 
export { AnimationEvent } from './animation_event'; 
export { AUTO_STYLE, AnimateChildOptions, AnimateTimings, AnimationAnimateChildMetadata, AnimationAnimateMetadata, AnimationAnimateRefMetadata, AnimationGroupMetadata, AnimationKeyframesSequenceMetadata, AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationQueryMetadata, AnimationQueryOptions, AnimationReferenceMetadata, AnimationSequenceMetadata, AnimationStaggerMetadata, AnimationStateMetadata, AnimationStyleMetadata, AnimationTransitionMetadata, AnimationTriggerMetadata, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, ɵStyleData } from './animation_metadata'; 
export { AnimationPlayer, NoopAnimationPlayer } from './players/animation_player'; 
export * from './private_export'; 

und ./animation_event.d.ts hat die Schnittstellendefinition

export interface AnimationEvent { 
    fromState: string; 
    toState: string; 
    totalTime: number; 
    phaseName: string; 
    element: any; 
    triggerName: string; 
} 

Wenn ich die Schnittstellendefinition in meinen Code kopiere, funktioniert alles einwandfrei.

All dies ist ziemlich ähnlich zu vielen anderen importierten, die ich verwendet habe, aber das ist das einzige, das Warnungen generiert.

Wie kann ich diese Warnungen verhindern, ohne die Schnittstellendefinition in meinen Code zu kopieren?

Antwort

1

app-module.ts: Haben Sie BrowserAnimationsModule importiert?

Siehe here in Dok.

Zusammen mit einem Plünderer example.

import { NgModule } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 
@NgModule({ 
    imports: [ BrowserModule, BrowserAnimationsModule ], 
}) 

Wenn das es nicht lösen:

  • Notieren Sie, was system.config.js in dem Plunker tun.
  • Eine andere verwandte Ressource ist eine github issues thread.

Achten Sie darauf, welche Schritte zu kommentieren, wenn es behoben wurde. ;-)

+0

Ich habe BrowserAnimationsModule importiert und alle meine Animationen funktionieren wie erwartet. Abgesehen von den Compiler-Warnungen läuft und funktioniert alles wie erwartet. –

+0

TL; DR Wird behoben, indem tsconfig.js compilerOptions.module von 'es2015' in 'CommonJS' geändert wird. Angenommen, dies muss eine Compilerkonfiguration sein, analysierte ich die Datei systemjs.config.js im Plunker, um sie mit meiner (von Angular CLI generierten) Datei tsconfig.app.json zu vergleichen. Es gab nur zwei Unterschiede: 1) noImplicitAny: true und 2) modul: 'commonjs'. Ich habe beide nacheinander gewechselt.Das TypeScript-Dokument gibt an, dass der Modultyp CommonJS ist, also habe ich das verwendet. Ich hoffe, dass diese Änderung nicht zu anderen Problemen führen wird ... –

+0

https://www.typescriptlang.org/docs/handbook/compiler-options.html --noImplicitAny Fehler bei Ausdrücken und Deklarationen mit einem implizierten 'any' erhöhen ' Art. Das wäre vielleicht nicht notwendig gewesen. Aber froh, dass du es gelöst hast. – JGFMK