Quelle est la différence entre les déclarations, les fournisseurs et l'importation dans NgModule

j'essaie de comprendre angulaire (parfois appelé Angular2+), puis je suis tombé sur @Module

  1. Importations
  2. déclarations
  3. Fournisseurs

Suivant Démarrage Rapide Angulaire

240
demandé sur isherwood 2016-08-21 12:51:37

3 réponses

Angulaire Concepts

  • imports rend les déclarations exportées d'autres modules disponibles dans le module actuel
  • declarations doivent mettre les directives (y compris les composants et les tuyaux) du module courant à la disposition des autres directives du module courant. Les sélecteurs de directives, de composants ou de pipes ne sont appariés avec le HTML que s'ils sont déclarés ou importés.
  • providers sont à rendre les services et les valeurs connues de DI. Ils sont ajoutés à la portée fondamentale et ils sont injectés dans d'autres services ou directives qui les ont comme dépendance.

un cas spécial pour providers sont des modules chargés paresseux qui obtiennent leur propre injecteur enfant. providers d'un module chargé paresseux ne sont fournis à ce module chargé paresseux que par défaut (pas l'ensemble de l'application comme c'est le cas avec les autres modules).

pour plus de détails sur les modules, voir aussi https://angular.io/docs/ts/latest/guide/ngmodule.html

  • exports rend les composants, les directives et les pipes disponibles dans les modules qui ajoutent ce module à 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.

Tapuscrit (ES2015) importations de

import ... from 'foo/bar' (que peut résoudre à un index.ts ) sont pour les importations dactylographiées. Vous en avez besoin chaque fois que vous utilisez un identifiant dans un fichier déclaré dans un autre fichier dactylographié.

Angulaire @NgModule() imports et Tapuscrit import sont entièrement différents concepts de .

Voir aussi jDriven - Tapuscrit et ES6 importation syntaxe

la plupart d'entre eux sont en fait la syntaxe simple du module ECMAScript 2015 (ES6) qui est aussi utilisée dans les scripts.

346
répondu Günter Zöchbauer 2018-02-13 13:38:29

imports : est utilisé pour importer des modules de support comme FormsModule, RouterModule, CommonModule, ou tout autre module de fonctionnalité sur mesure.

declarations : est utilisé pour déclarer les composants, les directives, les tuyaux qui appartiennent au module courant. Tout ce qui est dans les déclarations se connaît. par exemple, si nous avons un component, disons UsernameComponent, qui affiche la liste des noms d'utilisateurs, et nous avons aussi un pipe, disons toupperPipe, qui transforment la chaîne en chaîne de lettres majuscules. Maintenant, si nous voulons montrer les noms d'utilisateur en lettres majuscules dans notre UsernameComponent, nous pouvons utiliser le toupperPipe que nous avions créé avant mais comment UsernameComponent savent que le toupperPipe existent et comment nous pouvons y accéder et l'utiliser, voici les déclarations, nous pouvons déclarer UsernameComponent et toupperPipe.

Providers : est utilisé pour injecter les services requis par les composants, directives, pipes dans notre module.

lire en détail ici: https://angular.io/docs/ts/latest/guide/ngmodule.html

60
répondu Godfather 2016-09-06 06:43:58
Les composants

sont déclarés, les Modules importés et les Services fournis. Un exemple avec lequel je travaille:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';


import { AppComponent } from './app.component';
import {FormsModule} from '@angular/forms';
import { UserComponent } from './components/user/user.component';
import { StateService } from './services/state.service';    

@NgModule({
  declarations: [
    AppComponent,
    UserComponent
  ],
  imports: [
    BrowserModule,
    FormsModule
  ],
  providers: [ StateService ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }
21
répondu SanSolo 2018-04-18 16:48:32