Comments (3)
I tested it on my project with and without and reduced change detection from 572 to 42 just by adding the code above. Angular detects all changes through zone.js even tought you use angular code, except you run the code in this (this.zone.runOutsideAngular) context.
A nice way to debug this is the following ng component I use for performance tuning:
import {Component, NgZone} from '@angular/core';
@Component({
selector: 'debug-change-detection',
template: '<p class="number">{{check()}}</p>',
styles: [`
:host {
position: absolute;
left: 0;
bottom: 0;
display: block;
}
.number {
display: block;
font-size: 40px;
}
`]
})
export class DebugChangeDetectionComponent {
count = 0;
constructor(private zone: NgZone) {
}
check() {
this.zone.runOutsideAngular(() => {
setTimeout(() => {
this.count = this.count + 1;
}, 0);
}
);
return this.count;
}
}
You can also just use a {{printToConsole()}} function somewhere on the page to see the difference.
from ngx-countup.
Thanks for bringing this to my attention. So that is occurring even though the Angular directive is just providing an element reference and calling the countUp methods? CountUp itself uses requestAnimationFrame. Do you have a way to show that each frame triggers change detection?
from ngx-countup.
Wow, that's super helpful, thanks! I pushed a new version with these changes. 7.2.0
from ngx-countup.
Related Issues (20)
- Cannot update endVal and options simultanously HOT 1
- How to reset countup js? HOT 2
- Extend peer dependencies to Angular 8 HOT 2
- Uncaught SyntaxError: Unexpected token export HOT 7
- Start animation when element is scrolled or is visible in viewport HOT 3
- How to add a style? HOT 1
- Error on server side rendering HOT 10
- 'kind' of undefined HOT 2
- angular 9 HOT 2
- NG build --prod failing due to "cannot read 'kind' of undefined" HOT 1
- Can't bind to 'endVal' HOT 5
- Angular 10 HOT 1
- Bugs: Wrong switching to new animation during old HOT 1
- Does not build with Angular 10 HOT 7
- Angular 13 HOT 1
- Make the animate function public HOT 2
- Angular 15 compability HOT 4
- "Works with Universal" but doesn't HOT 5
- This likely means that the library (ngx-countup) which declares CountUpModule is not compatible with Angular Ivy. Check if a newer version of the library is available, and update if so. Also consider checking with the library's authors to see if the library is expected to be compatible with Ivy. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ngx-countup.