Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Animations do not run in Angular 17 #125

Closed
JWiseCoder opened this issue Nov 9, 2023 · 6 comments
Closed

Animations do not run in Angular 17 #125

JWiseCoder opened this issue Nov 9, 2023 · 6 comments
Assignees

Comments

@JWiseCoder
Copy link

JWiseCoder commented Nov 9, 2023

We have a number of angular animations in our app, and when I update to Angular 17, the animations stop working. They are complex animations with multiple triggers and transitions, but none of it is running. Even if I put in a transition like this at the top of my triggers:

            transition((from, to) => {
                console.log('test transition', from, to);
                return false;
            }, group([])),

That function never runs. I haven't changed anything between versions and it is broken on both iOS and Android, so something must have changed with how Angular does animations.

@JWiseCoder
Copy link
Author

There are some related problems still unaddressed in this issue.

Though that issue isn't what is causing this one. I have a patch that I use to fix the problems in #95.

@JWiseCoder
Copy link
Author

@NathanWalker, is there any update on this?

@SmailHammour
Copy link

Any news on this?

@JWiseCoder
Copy link
Author

JWiseCoder commented Apr 25, 2024

OK, I've worked out what the issues were for the animations. Or at least, I got them working for me, but I can't patch it properly (yet). All I can do is mod the node_modules file for nativescript/angular, and the animations will work.

Here are the changes in nativescript-angular.mjs:

At the top of the file, I add ɵAnimationRendererFactory to the imports for '@angular/animations/browser':

import { ɵAnimationRendererFactory, ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, AnimationDriver, ɵAnimationStyleNormalizer } from '@angular/animations/browser';

Then an import from '@angular/animations':

import { AnimationBuilder, ɵBrowserAnimationBuilder } from '@angular/animations';

There's a lot of commented code, so I had to uncomment the following (with some changes based on the imports):

export function instantiateRendererFactory(renderer, engine, zone) {
  return new ɵAnimationRendererFactory(renderer, engine, zone);
}
{ provide: AnimationBuilder, useClass: ɵBrowserAnimationBuilder },
            {
              provide: RendererFactory2,
              useFactory: instantiateRendererFactory,
              deps: [NativeScriptRendererFactory, ɵAnimationEngine, NgZone],
            },

NOTE: There are two instances of those providers, so I had to uncomment both:

{ provide: AnimationBuilder, useClass: ɵBrowserAnimationBuilder },
                        {
                          provide: RendererFactory2,
                          useFactory: instantiateRendererFactory,
                          deps: [NativeScriptRendererFactory, ɵAnimationEngine, NgZone],
                        },

The last part is a bug fix for something that changed in Angular. Apparently the first param of AnimationEngine was changed from the bodyNode to the doc, so we need to change the InjectableAnimationEngine constructor:

class InjectableAnimationEngine extends ɵAnimationEngine {
    constructor(doc, driver, normalizer) {
        super(doc, driver, normalizer);
    }

That's it. Just those changes, and the animations work like before. Is it possible to get similar changes into an ns/angular update?

Attn: @NathanWalker

@darklight365
Copy link
Contributor

PR created to correct this issue: #132
cc: @NathanWalker, @edusperoni

@NathanWalker
Copy link
Contributor

Huge thank you to @JWiseCoder @darklight365!
https://github.com/NativeScript/angular/releases/tag/17.1.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants