2
votes

Fonction de flèche Vs Chemin de chaîne dans la route LoadChildren en angulaire

Dans le code suivant, outre le fait que dans le premier exemple, nous devons importer productsModule dans le fichier, quelle est la différence entre ces deux façons de charger une route paresseusement?

{ path: 'products', loadchildren: 'app/products/products.module#ProductsModule' }

contre

{ path: 'products', loadchildren: () => productsModule }


0 commentaires

3 Réponses :



1
votes

loadChildren: string était obsolète dans Angular 8.0 .0 (28/05/2019).

ES2017 dynamic import () est désormais pris en charge par Angular CLI et chaîne d'outils plus grande. Cela rend l'API loadChildren: string en grande partie redondant, car import () est beaucoup plus naturel, est moins sujet aux erreurs et est conforme aux normes.

À part cela, le résultat final en utilisant les deux méthodes est le même (les routes sont chargées paresseusement, avec un avertissement si la version obsolète est utilisée).

Cependant, pour conserver tout projet à jour, pensez à utiliser

{ path: 'products', loadchildren: () => productsModule }

La version obsolète peut être supprimé dans la version 11 .

Voir


0 commentaires

0
votes

Corrigez-moi si je me trompe, mais je pense que le premier cas:

{ path: 'products', loadChildren: () => import('./products/products.module').then(m => m.productsModule) }

ne chargera pas le module paresseusement, car productsModule doit être importé au en haut de votre fichier .ts (aucun package .js n'est téléchargé lors de l'accès à l'itinéraire). Vous devez utiliser l'instruction import () pour le rendre paresseux, exemple:

{ path: 'products', loadchildren: () => productsModule }

https://angular.io/guide/lazy-loading-ngmodules

https://alligator.io/angular/lazy-loading/

* cela devrait être ProductsModule au lieu de productsModule , selon la chaîne 'app/products/products.module#ProductsModule'.


0 commentaires