Découvrir les directives - Découvrir angular–Mon premier projet

Comment s’attacher à des composants HTML de la page et interagir avec eux ? C’est grñce aux directives que vous allez pouvoir le faire dans Angular.

Chaque directive a un sĂ©lecteur css (enfin comme si c’était un sĂ©lecteur css).

 

Trois types de directive :

  1. Les composants (Component)
  2. Les directives d’attribut
  3. Les directives structurelles (comme ngIf, ou ngFor)

 

A noter que la déclaration de la directive a une importance.
Si on met : selector : ‘[unselector]’, il s’agit d’une directive d’attribut, si l’on met : selector : ‘unselector’, c’est comme si c’était un composant (cela s’applique partout, et pas que pour les attributs).

 

Toujours importer et déclarer la directive dans le Module

Pour que la directive soit reconnue par l’application Angular, vous devez l’import et la rĂ©fĂ©rencer dans le module :

import { HighlightDirective } from ‘./highlight.directive’;

 

@NgModule({

imports: [

BrowserModule

],

declarations: [

AppComponent,

HighlightDirective

],

bootstrap: [

AppComponent//moduleracineaudémarrage

]

})

export class AppModule {

}

 

Les directives d’attribut

La crĂ©ation d’une directive se fait grĂące au gĂ©nĂ©rateur du angular CLI : ng generate directive highLight.

Il va crĂ©er une classe TypeScript : avec l’attribut de classe : @Directive :

@Directive({

selector: ‘[appHighlight]’ // app{name} to stop confusing between this selector and a true css selector, don’t use ng{name} !

})

 

NOTE: on peut mĂȘme affiner notre sĂ©lecteur : @Directive({selector: ‘button[counting]’}). Voulant dire : tous les boutons qui ont le selecteur counting (<button counting />)

 

En important en plus ElementRef :

import { ElementRef, Directive } from ‘@angular/core’;

 

On peut profiter de l’accĂšs dĂšs le constructeur Ă  l’élĂ©ment oĂč est la directive dans le DOM.

 

Ainsi, nous pouvons trÚs rapidement appliquer le principe DRY, et dire que tous les éléments du DOM qui auront la directive appHightLight changeront leur couleur de fond en jaune :

element.nativeElement.style.backgroundColor = ‘yellow’;

 

Ecouter les événements du DOM

Pour Ă©couter les Ă©vĂ©nements sur l’élement, nous allons rajouter un attribut, qui sera un attribut de mĂ©thode : HostListener.

 

Nous importons l’attribut qui va dĂ©corer nos mĂ©thodes :
import { ElementRef, Directive, HostListener } from ‘@angular/core’;

 

Ce qui va nous permettre de nous attacher aux événements :

@HostListener(« mouseleave »)

onMouseLeave() {

  this._element.nativeElement.style.border = « inherit »;

}

 

Passons maintenant Ă  la personnalisation de notre directive

Grùce au décorateur Input, nous allons pouvoir rendre paramétrable un attribut de la classe de la directive. Et donc, nous pourrons renseigner cette valeur depuis le html de la Vue.

 

@Input() // if we need to change the name @Input(‘newName’)

borderColor: string;

Ici borderColor devient une propriĂ©tĂ© qui va ĂȘtre paramĂ©trable cĂŽtĂ© HTML.

 

<div appHighlight borderColor= »green » *ngFor= »let oneClone of clones » class= »row » >

 

 

Super, on a déjà bien avancé sur un outil bien pratique pour appliquer des comportements, du style à chacun de nos contrÎles DOM.

 

 

Prochaine étape : on va organiser nos routes, pour avoir plusieurs pages.

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639