2017-05-16 4 views
0

Ich habe das Problem auf exportierte Funktionen hingewiesen.Ahead of Time Compilation statische Analyse Fehler

animations.ts:

export function slideInRight(triggerName = 'slideInRight', unactivatedState = 'initial', activatedState = 'state-0', duration = '1s') { 
    return trigger(triggerName, [ 
    state(unactivatedState, style({ 
     transform: 'translateX(-100%)' 
    })), 
    state(activatedState, style({ 
     transform: 'translateX(0)' 
    })), 
    transition(`${unactivatedState} => ${activatedState}`, animate(`${duration} ease-in-out`)), 
    transition(`${activatedState} => ${unactivatedState}`, animate(`${duration} ease-in-out`)) 
    ]); 
} 

home.component.ts:

import { slideInRight } from 'animations' 

@Component({ 
    // ... 
    animations: [slideInRight('param1', 'param2')] 
}) 
export class HomeComponent {} 

ich folgende Fehlermeldung erhalten, wenn AOT Kompilierung zu tun versuchen:

ERROR in einem Fehler aufgetreten statische Auflösung von Symbolwerten Das Ausdrucksformular wird nicht unterstützt (Position 24:16 in der ursprünglichen .ts-Datei), das Symbol slideInLeft im Pfad/zu/project/angular/animations.ts aufgelöst, das Symbol HomeComponent im Pfad/zu/project/angular/app/pages/home aufgelöst /home.component.ts, Auflösungs Symbol HomeComponent in path/to/Projekt/Winkel/app/pages/home/home.component.ts

Wenn ich auf dem Dekorateur nennen dies die Animationen Eigenschaft Kommentar aus, die Fehler geht weg. Was mache ich hier falsch?

Antwort

0

Ich hatte das gleiche Problem mit Vorlage Zeichenfolgen für Animationen. Versuchen Sie, Ihre Übergänge Refactoring normale String-Verkettung zu verwenden:

transition(unactivatedState + ' => ' + activatedState, animate(duration + ' ease-in-out')), 
transition(activatedState + ' => ' + unactivatedState, animate(duration + ' ease-in-out')) 

]);

0

Hier einige Syntax, die für mich gearbeitet:

animations: [ 
    fadeInOut(), 
], 

Und:

export function fadeInOut(): AnimationEntryMetadata { 
    return trigger("fadeInOut", [ 
     state("in", style({opacity: "1"})), 
     transition("void => *", [ 
      style({opacity: "1"}), 
      animate(100), 
     ]), 
     transition("* => void", [ 
      animate(100, style({opacity: "0.0"})), 
     ]), 
    ]); 
} 

Es ist eine Weile her ist, aber wenn ich an einem Punkt richtig erhielt ich einen ähnlichen Fehler erinnern, als ich ein gerufener Methode innerhalb von fadeInOut(), die vom vorausgehenden Compiler nicht statisch analysierbar war. Meine damalige Lösung bestand darin, meine Animationsmethode komplett eigenständig zu machen.

+0

Was meinst du komplett in sich geschlossen? – Jeff

+0

Ich habe meine Frage mit der aktuellen Methode aktualisiert. Können Sie auf das Problem hinweisen? – Jeff

+0

Als ich "komplett eigenständig" sagte, meinte ich, dass ich Hilfsfunktionen (fadeIn und fadeOut) aufgerufen hatte, die ich geschrieben hatte, als der AOT-Compiler sich beschwerte. Ich refaktorierte, so dass ich mich nicht auf diese Hilfsfunktionen verließ. Was Ihre zweite Frage angeht, bin ich mir im Moment nicht sicher. Es sieht so aus, als beschwerte sich der AOT-Compiler über 'slideInLeft': "Ausdrucksform nicht unterstützt (Position 24:16 in der ursprünglichen .ts-Datei), Auflösung des Symbols slideInLeft." "Aber ich sehe slideInLeft nirgends in dem Code, den Sie gepostet haben . – user3821892

Verwandte Themen