J'essaie de comprendre Angular (parfois appelé Angular2 +), puis je suis tombé sur @Module
:
Importations
Déclarations
Fournisseurs
Suite au démarrage rapide angulaire
la source
J'essaie de comprendre Angular (parfois appelé Angular2 +), puis je suis tombé sur @Module
:
Importations
Déclarations
Fournisseurs
Suite au démarrage rapide angulaire
Concepts angulaires
imports
rend les déclarations exportées des autres modules disponibles dans le module actueldeclarations
sont de rendre les directives (y compris les composants et les tuyaux) du module actuel disponibles aux autres directives du module actuel. Les sélecteurs de directives, de composants ou de canaux ne sont comparés au HTML que s'ils sont déclarés ou importés.providers
sont de faire connaître les services et les valeurs à DI (injection de dépendance). Ils sont ajoutés à la portée racine et ils sont injectés dans d'autres services ou directives qui les ont comme dépendance.Un cas particulier pour providers
les modules chargés paresseux qui ont leur propre injecteur enfant. providers
d'un module chargé paresseusement sont fournis uniquement à ce module chargé paresseux par défaut (pas à l'ensemble de l'application comme c'est le cas avec d'autres modules).
Pour plus de détails sur les modules, voir également https://angular.io/docs/ts/latest/guide/ngmodule.html
exports
rend les composants, les directives et les canaux disponibles dans les modules auxquels ce module est ajouté imports
. exports
peut également être utilisé pour réexporter des modules tels que CommonModule et FormsModule, ce qui se fait souvent dans des modules partagés.
entryComponents
enregistre les composants pour la compilation hors ligne afin qu'ils puissent être utilisés avec ViewContainerRef.createComponent()
. Les composants utilisés dans les configurations de routeur sont ajoutés implicitement.
Importations TypeScript (ES2015)
import ... from 'foo/bar'
(qui peut se résoudre en unindex.ts
) sont destinés aux importations TypeScript. Vous en avez besoin chaque fois que vous utilisez un identifiant dans un fichier dactylographié qui est déclaré dans un autre fichier dactylographié.
Angular @NgModule()
imports
et TypeScript import
sont des concepts entièrement différents .
Voir aussi jDriven - Syntaxe d'importation TypeScript et ES6
La plupart d'entre eux sont en fait une syntaxe de module ECMAScript 2015 (ES6) que TypeScript utilise également.
forRoot()
dans un module chargé paresseusement. Êtes-vous d'accord? Voir le module de base . Le lien vers # module-partagé-pour-racine n'existe plus.import
est une fonctionnalité JS (ES2015), pas une TypeScript. :)imports
, mais exporter vos déclarables (composant, directive, pipe) avecexports
. Ainsi, les principaux objectifs deimports
etexports
sont des choses différentes. Au lieu de cela, la cible principale deexports
votredeclarations
. Vous déclarez votre composant pardeclarations
, mais pour un composant chargé dynamique, vous devez les insérerentryComponents
. En attendant, lesproviders
sont gérés dans une autre histoire par DI.imports
sont utilisés pour importer des modules de prise en charge tels que FormsModule, RouterModule, CommonModule ou tout autre module de fonctionnalité personnalisé.declarations
sont utilisés pour déclarer les composants, directives, tuyaux qui appartiennent au module courant. Tout le monde dans les déclarations se connaît. Par exemple, si nous avons un composant, disons UsernameComponent, qui affiche une liste des noms d'utilisateur et nous avons également un canal, disons toupperPipe, qui transforme une chaîne en une chaîne de lettres majuscules. Maintenant, si nous voulons afficher les noms d'utilisateur en lettres majuscules dans notre UsernameComponent, nous pouvons utiliser le toupperPipe que nous avons créé auparavant, mais la question est de savoir comment UsernameComponent sait que le toupperPipe existe et comment il peut y accéder et l'utiliser. Voici les déclarations, nous pouvons déclarer UsernameComponent et toupperPipe.Providers
sont utilisés pour injecter les services requis par les composants, directives, tuyaux dans le module.la source
Les composants sont déclarés, les modules sont importés et les services sont fournis. Un exemple avec lequel je travaille:
la source
@NgModule
Constructions angulaires :import { x } from 'y';
: Il s'agit de la syntaxe de dactylographie standard (syntaxe duES2015/ES6
module) pour l'importation de code à partir d'autres fichiers. Ce n'est pas spécifique à Angular . De plus, cela ne fait techniquement pas partie du module, il est juste nécessaire d'obtenir le code nécessaire dans le cadre de ce fichier.imports: [FormsModule]
: Vous importez d'autres modules ici. Par exemple, nous importonsFormsModule
dans l'exemple ci-dessous. Nous pouvons maintenant utiliser les fonctionnalités que le FormsModule a à offrir tout au long de ce module.declarations: [OnlineHeaderComponent, ReCaptcha2Directive]
: Vous mettez vos composants, directives et tuyaux ici. Une fois déclarés ici, vous pouvez maintenant les utiliser dans tout le module. Par exemple, nous pouvons maintenant utiliser leOnlineHeaderComponent
dans laAppComponent
vue (fichier html). Angular sait où le trouverOnlineHeaderComponent
car il est déclaré dans le@NgModule
.providers: [RegisterService]
: Ici, nos services de ce module spécifique sont définis. Vous pouvez utiliser les services de vos composants en injectant avec l'injection de dépendance.Exemple de module:
la source
Ajout d'une feuille de triche rapide qui peut aider après la longue pause avec Angular:
DÉCLARATIONS
Exemple:
declarations: [AppComponent]
Que pouvons-nous injecter ici? Composants, tuyaux, directives
IMPORTATIONS
Exemple:
imports: [BrowserModule, AppRoutingModule]
Que pouvons-nous injecter ici? autres modules
FOURNISSEURS
Exemple:
providers: [UserService]
Que pouvons-nous injecter ici? prestations de service
AMORCER
Exemple:
bootstrap: [AppComponent]
Que pouvons-nous injecter ici? le composant principal qui sera généré par ce module (nœud parent supérieur pour une arborescence de composants)
COMPOSANTS D'ENTRÉE
Exemple:
entryComponents: [PopupComponent]
Que pouvons-nous injecter ici? composants générés dynamiquement (par exemple en utilisant ViewContainerRef.createComponent ())
EXPORTATION
Exemple:
export: [TextDirective, PopupComponent, BrowserModule]
Que pouvons-nous injecter ici? composants, directives, modules ou tuyaux auxquels nous aimerions avoir accès dans un autre module (après importation de ce module)
la source
la source