(Confirmation d'un problème même avec Angular 7). Faisons en sorte que cela soit corrigé !
J'utilise le HMR pour la mise en place ici : https://github.com/angular/angular-cli/wiki/stories-configure-hmr d'un nouveau ng new
construire.
Si je modifie un composant et le rend paresseux, angular HMR va tout recharger à chaud, ce qui rend la synchronisation de la page plus lente.
Je le sais parce que c'est configuré par défaut pour console.log
chaque module qui est rechargé, et quand j'utilise une route paresseuse, il enregistre tout. Mais lorsque je modifie ce composant pour le rendre non paresseux, il n'enregistre que quelques petits composants.
Par conséquent, lorsque j'utilise HMR et des itinéraires paresseux, mon application prend quelques secondes de plus pour se rafraîchir. C'est ennuyeux.
Y a-t-il un moyen de contourner ce problème ?
(Le chargement paresseux des routes est accompli par quelque chose comme ceci)
// Main homepage
{
path: '',
loadChildren: './public/home/home.module#HomeModule'
},
// ...
(juste un exemple pour montrer que je fais du lazy-loading de la bonne manière)
Voici quelques logs pour montrer ce qui se passe quand je charge paresseusement le fichier home.component.ts
// Everything here is normal, great!
[HMR] - ../../../../../src/app/public/home/home.component.html
log.js:23 [HMR] - ../../../../../src/app/public/home/home.component.ts
log.js:23 [HMR] - ../../../../../src/app/public/home/home.module.ts
log.js:23 [HMR] - ../../../../../src/app/public/home/home.routing.ts
// Everything below here is NOT normal, bad! All this is extra. These are my modules, yes, but all this needs to be loaded again?
log.js:23 [HMR] - ../../../../../src/$$_lazy_route_resource lazy recursive
log.js:23 [HMR] - ../../../core/esm5/core.js
log.js:23 [HMR] - ../../../platform-browser-dynamic/esm5/platform-browser-dynamic.js
log.js:23 [HMR] - ../../../common/esm5/common.js
log.js:23 [HMR] - ../../../platform-browser/esm5/platform-browser.js
log.js:23 [HMR] - ../../../router/esm5/router.js
log.js:23 [HMR] - ../../../../../src/app/shared/shared.module.ts
log.js:23 [HMR] - ../../../common/esm5/http.js
log.js:23 [HMR] - ../../../../../src/app/features/proxy-http-interceptor/proxy-http-interceptor.ts
log.js:23 [HMR] - ../../../../../src/app/shared/unauthorized-http-interceptor.ts
log.js:23 [HMR] - ../../../../../src/app/features/auth/auth.service.ts
log.js:23 [HMR] - ../../../../../src/app/features/user/user.service.ts
log.js:23 [HMR] - ../../../../@auth0/angular-jwt/index.js
log.js:23 [HMR] - ../../../../@auth0/angular-jwt/src/jwt.interceptor.js
log.js:23 [HMR] - ../../../../@auth0/angular-jwt/src/jwthelper.service.js
log.js:23 [HMR] - ../../../../@auth0/angular-jwt/src/jwtoptions.token.js
log.js:23 [HMR] - ../../../../../src/app/shared/container.directive.ts
log.js:23 [HMR] - ../../../flex-layout/esm5/flex-layout.es5.js
...
...
A ton more logging
6 votes
Je constate également ce comportement dans un projet Angular 4.1 CLI. Cela rend HMR pratiquement inutile. Avez-vous trouvé une solution ?
0 votes
Je n'ai jamais trouvé la solution, mais je donne à la question une note positive pour qu'elle soit vue un peu plus souvent :) faites-moi savoir si vous avez trouvé la solution, vous aussi
3 votes
J'ai moi aussi un problème similaire avec Angular 5.2. Avec un module à chargement rapide, cela fonctionne comme prévu, mais avec une modification mineure d'un fichier sass d'un composant dans un module à chargement lent, je reçois une avalanche de mises à jour et l'état maintenu dans mon app.component racine est perdu. J'espère pouvoir résoudre ce problème, sinon HMR n'a aucun avantage. Quelqu'un d'autre a eu ce problème / l'a résolu ?
4 votes
Même chose ici avec Angular 5.2.3, HMR est inutile car il recharge l'application.
1 votes
Je constate le même comportement sur Angular 6.1.9 (CLI 6.2.4). Quelqu'un a-t-il trouvé une solution à ce problème ?
2 votes
J'ai le même problème avec angular 7
1 votes
Je peux le confirmer dans un projet Angular 7 récemment créé. Comme il s'agit d'un projet plutôt petit, je bénéficie toujours de HMR (le rechargement ne prend que quelques secondes au lieu de prendre plus de temps pour tout rafraîchir), mais il serait bien d'avoir une explication sur la raison pour laquelle il ne fonctionne pas correctement.
0 votes
stackoverflow.com/questions/55355133/