0% ont trouvé ce document utile (0 vote)
35 vues34 pages

Services et Injection dans Angular

Le document présente les concepts clés des services dans Angular, notamment l'injection de dépendances, la création et l'utilisation de services, ainsi que l'utilisation des observables et du service HttpClient. Il explique comment les services permettent de réduire le couplage entre les composants et d'assurer la réutilisabilité, tout en détaillant les méthodes HTTP disponibles via HttpClient. Enfin, le document fournit des exemples pratiques d'injection de services et d'utilisation d'observables pour gérer des données asynchrones.

Transféré par

herculestn505
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
35 vues34 pages

Services et Injection dans Angular

Le document présente les concepts clés des services dans Angular, notamment l'injection de dépendances, la création et l'utilisation de services, ainsi que l'utilisation des observables et du service HttpClient. Il explique comment les services permettent de réduire le couplage entre les composants et d'assurer la réutilisabilité, tout en détaillant les méthodes HTTP disponibles via HttpClient. Enfin, le document fournit des exemples pratiques d'injection de services et d'utilisation d'observables pour gérer des données asynchrones.

Transféré par

herculestn505
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Les services dans Angular

Injection de dépendances

Les services

Les observables

Le service HttpClient

2
Injection de dépendances
Injection des dépendances

• C’est un design pattern qui consiste à séparer l’instanciation d’une dépendance et son
utilisation.

• L’injector du système d’injection de dépendance permet de créer ou réutiliser une dépendance.

• Il appelle uniquement les dépendances dont l’application aura besoin lors de l’exécution..

• Les services dans la plus part du temps sont utilisées comme des singletons çad un service est
créé seulement une fois pour le cycle de vie de l’application.
Injection des dépendances

Soit un composant BookSearchComponent qui utilise un service


BookRepository. Ce dernier utilise à son tour un service HttpClient
Injection des dépendances

• Sans injection de dépendances


Injection des dépendances

• Avec injection de dépendances


Les services
Service - Définition

• Un service est une ressource réutilisable et partagée entre plusieurs


éléments.

• Il s’agit généralement d’une classe ayant un objectif étroit et bien


défini.

• Il offre des propriétés et des fonctionnalités dont l’application a


besoin
Service - Intérêts

• Réduire le couplage entre composants ou classes.

• Assurer la modularité et la réutilisabilité

• Un composant se concentre principalement sur la présentation des


données et délègue l’accès aux données à aux services.

• Les services sont un excellent moyen de partager des informations


entre des classes qui ne se connaissent pas
Service - Création

• Nous pouvons écrire manuellement la classe du service tout en


respectant la charte associée.
• Angular CLI permet de générer un service à l’aide de la commande ng
generate service nomservice

• Si un service est à créer dans un répertoire bien déterminé, il faut alors


préciser le nom du répertoire au niveau la commande ng generate service
rep\nomservice
Service - déclaration

• Pour déclarer qu’une classe est un service dans Angular, il suffit de


créer une classe TypeScript et de la décorer avec le décorateur
@Injectable().

@Injectable()
export class UsersService { ... }
Service - Injection

• Un service est injecté au niveau de la classe qu’elle va l’utiliser. Cette


classe peut être un service ou un composant.

• Le code suivant permet d’injecter un service appelé DataService au


niveau du composant AppComponent. Il s’agit de le définir comme
argument du constructeur de la classe.
export class AppComponent {
constructor(private dataService:DataService) { }
}
Provider - Définition

Afin de pouvoir instancier un service, Angular a besoin d'un "provider"


lui indiquant comment produire l'instance de ce service. Cela se fait
généralement via la propriété
• providedIn de @Injectable

• providers de la configuration du module associé

• providers du composant

Vous devez alors enregistrer au moins un fournisseur « provider » du


service à injecter.
Provider - Déclaration

Avantages de providedIn:
• Simple et rapide à implémenter

• Ne charger le code des services qu'à la première injection

• Si le service n'est jamais utilisé, le code du service sera entièrement


retiré du build final de l'application
Provider - Erreur

• Au cas où aucun provider n’est enregistrée pour un service XService


vous obtenez l’erreur suivante:

StaticInjectorError(xModule)[xxxxxxx -> xxxxxxxx]:


StaticInjectorError(Platform: core)[xxxxxx -> xxxxxxx]:
NullInjectorError: No provider for XService!

• Il faut alors définir le provider de XService


Services - Squelette

• @Injectable(): décorateur qui permet de fournir


les métadonnées permettant à Angular d'injecter
le service dans un composant en tant que
dépendance.
• providedIn: 'root' : fournir le service au niveau

racine. Ce provider est généré par défaut en créant


un service avec l’outil CLI. Angular crée une instance
unique et partagée de ce service et l'injecte dans
toute classe qui le demande
ProvidedIn
provider description

@Injectable({ providedIn: 'root' }) Une seule instance du service disponible dans toute l’application (y compris les modules lazy
loaded)

@Injectable({ providedIn: 'any' }) Une instance du service est crée pour chaque module lazy loaded
Le reste de l’application y compris les modules qui ne sont pas lazy loaded partage l’instance
disponible au niveau du module racine.

@Injectable({ providedIn: 'plateform' }) Ceci est utile si vous avez plusieurs applications anangular en cours d’exécution sur une seule
page.

Il s’agit d’une option utile si vous utilisez Angular Elements, où ils peuvent partager une seule
instance de service entre eux
Providers
provider description

@NgModule({ L’enregistrement du service dans un @NgModule le rendra disponible uniquement dans ce


….. module (Singleton dans la portée du module)
providers: [SomeService]
}) RQ: L’utilisation de cette façon avec providedIn: 'root' rend le service singleton pour le reste de
l’application, tandis qu’il crée une instance distincte pour ce module

@Component({ L’enregistrement du service dans un @Component le rendra disponible pour ce composant avec
….. une nouvelle instance du service pour chaque instance de composant.
providers: [SomeService]
})
Exemple d’application

• Soit un service appelé LogService

@Injectable({
providedIn : ‘root’
})
export class LogService {
log(msg: any) { [Link](msg); }
error(msg: any) { [Link](msg); }
warn(msg: any) { [Link](msg); }
}

• Ce service offre trois méthodes : log(msg), error(msg) et warn(msg). Ces méthodes sont
souvent utilisées par divers classes.
Exemple d’application

• Injecter ce service au niveau du (composant ou service ou classe) qui


a besoin

constructor(private lservice:LogService){}

• Utiliser l’une ou les méthodes de ce service en fonction du besoin.

log(){
[Link]("finish");
}
Les observables
Les observables - Définition

• Les observables représentent un nouveau standard pour la gestion des données


asynchrones
• Les observables sont des collections paresseuses de valeurs multiples dans le temps.
• Les observables sont des collections paresseuses c’est à dire les collections ne sont
envoyés que pour les inscrits.
• Les observables sont des collections de valeurs multiples dans le temps c’est-à-dire
l’observable peut envoyers plusieurs valeurs au fil des temps d’une façon asynchrone.
• Les observables sont annulables (unsubscribe())
Les observables - Définition

• Ils ne sont pas une caractéristique spécifique à Angular.


• Angular utilise largement les observables dans le système
d’événements et le service HTTP.
• Angular entrain d’utiliser les observables de la bibliothèque RxJS
(bibliothèque Reactive X pour le langage JavaScript)
Les observables dans Angular

Angular utilise les observables comme interface pour gérer diverses


opérations asynchrones courantes. Tels que:
• Les classes EventEmitter extends observable.
• Les modules Router et Forms utilisent des observables pour écouter et
répondre aux événements entrés par l'utilisateur.
• Le module HttpClientModule utilise des observables pour gérer les
requêtes et les réponses HTTP. getPizzas(): Observable <Pizza[]> {
return [Link]<Pizza[]>(urlAPI) ;
}
Les observables - inscription

• L’inscription à un observable peut se faire avec:


• Les pipes asynchrones
• La fonction subscribe
• Une fois l’inscription à un observable est établie, ce dernier émet les
collections.
• Un traitement doit être fait une fois les collections sont émises. Ce
traitement est à définir à l’aide de la fonction subscribe ou la pipe.
La méthode subscribe

• La fonction subscribe() permet de s’inscrire à un observable pour


récupérer les collections.
• Elle possède trois arguments (résultat=> quoi faire avec, erreur=>
quoi faire, terminé=>notifier())
[Link](
x => [Link]('Observer got a next value: ' + x),
err => [Link]('Observer got an error: ' + err),
() => [Link]('Observer got a complete
notification')
);
Le service HttpClient
HttpClientModule et HttpClient

• La plupart des applications front-end communiquent avec des services


principaux via le protocole HTTP.
• Angular propose un service appelé HttpClient qui offre un ensemble de
fonctions à utiliser pour récupérer ou envoyer des données
• Pour l’utiliser il faut importer le module HttpClientModule dans
AppModule et importer le service HttpClient au niveau de la classe dans
laquelle a été injecté. Les deux à importer à partir du package
@angular/common/http
Les méthodes Http

 GET
• La méthode qui permet de demander une ressource.
 HEAD
• Cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-
même.
 POST
• Cette méthode permet d'ajouter une ressource sur le serveur.
 OPTIONS
• Cette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général.
 PUT
• Cette méthode doit être utilisée lorsqu'une requête modifie la ressource.
 DELETE
• Cette méthode permet de supprimer une ressource du serveur.
Exemple

• Exemple d’utilisation de la méthode GET du service HttpClient:


1-Injecter le service HttpClient au niveau du service:

constructor(private http:HttpClient) {}

2- Définir la méthode qui appelle la méthode get()

getFilmList():Observable<film[]>{
return [Link]<film[]>([Link]);
}
3- Injecter le service FilmsService au niveau du composant:

constructor(private service:FilmsService) {}

4- Appeler la méthode getFilmList() et récupérer la liste des films

getFilms() {
[Link]().subscribe(
(data:film[])=>{[Link] = data});
}
Néthographie

• [Link]
• [Link]
Merci de votre attention

Vous aimerez peut-être aussi