Comments (6)
I think that it would be not optimal to run changes detection whenever something changes it's visibility. Especially when you have many elements that are tracked. So to have best performance I think that change detection should be run based of a results from inViewportAction
and then inside it user of library would call ChangeDetectorRef.detectChanges();
when needed as explicit task.
from ng-in-viewport.
I'm not an expert in NgZone and change detection. I assumed based on issue #176, that it was the intention for the loadOnIntersection
event to emit inside Zone. It seemed to me that the behavior now is what the poster in issue #176 was asking for as an option. But I could definitely be misunderstanding this.
My use case isn't about change detection, but about dispatching an action to NGRX inside of NgZone, as described here: https://ngrx.io/guide/store/configuration/runtime-checks#strictactionwithinngzone.
I can always fix this at my end by calling dispatch
inside of ngZone.run
, but I reported this here because it seemed like there was a significant change between version 13 and 15, and that it might be a breaking change for those relying on the previous behavior. It may well be that there is no change, and I am misunderstanding it. It may also be that there is a change, and it is a good one for performance.
from ng-in-viewport.
@all-contributors please add @karptonite for bug
from ng-in-viewport.
I've put up a pull request to add @karptonite! 🎉
from ng-in-viewport.
Thanks! As I mentioned, this might be a negative for performance, and it might be better to either ask people to handle the events with NgZone themselves, or add an option to take it out of NgZone, as requested in #176. I'm not sure, honestly, but this should restore the previous behavior for my use case, anyway!
from ng-in-viewport.
The library should not expect Angular users to use advanced strategies and should work with the framework's defaults. It was also a nice way of testing automatic releasing.
from ng-in-viewport.
Related Issues (20)
- Please provide IVY version HOT 4
- Error when several instances with different root configurations HOT 8
- Library is blocked when CSP header 'unsafe-eval' is not specified HOT 6
- Is this repository a joke? HOT 1
- Bug: isn't working with scroll-snap-type: x mandatory HOT 3
- InViewportDirective should emit when the host element is destroyed HOT 6
- Support for Angular 17 HOT 3
- How to debounce the event? HOT 1
- Angular 18 RC-1 not working HOT 2
- Update angular monorepo to version 10.1.0 HOT 5
- Add tsdoc comments
- Downlevel generated .d.ts files to support angular versions >= v5 HOT 3
- Property 'options' is private HOT 4
- Upgrade angular from 10.1.3 to 10.1.4
- Threshold not working as expected or i miss-understood the conf. HOT 1
- Fix `jest` setup
- Trigger event after it's 100% in the viewport for time `t` HOT 2
- core.js:6456 ERROR Error: inject() must be called from an injection context HOT 1
- Preventing initial onIntersection method call HOT 1
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 ng-in-viewport.