📚 Cheatsheet

Une collection organisée de snippets de code pour accélérer votre développement. Parcourez, recherchez et copiez en un clic.

Snippets 23

Retour
Composant - Accéder au template avec @ViewChild
Avancé
import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';

@Component({ ... })
export class MonComposant implements AfterViewInit {
  @ViewChild('monInput') inputElement: ElementRef;

  ngAfterViewInit() {
    this.inputElement.nativeElement.focus();
  }
}
Composant - Binding bidirectionnel
Facile
<input [(ngModel)]="proprieteDuComposant">
Composant - Composant Standalone
Intermédiaire
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';

@Component({
  selector: 'app-alerte',
  standalone: true,
  imports: [CommonModule],
  template: `<div *ngIf="visible">Alerte !</div>`
})
export class AlerteComponent {
  visible = true;
}
Composant - Création de base
Facile
import { Component } from '@angular/core';

@Component({
  selector: 'app-racine',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  titre = 'mon-app';
}
Composant - Encapsulation de style
Avancé
import { Component, ViewEncapsulation } from '@angular/core';

@Component({
  selector: 'app-mon-composant',
  template: '...', 
  styles: ['...'],
  encapsulation: ViewEncapsulation.Emulated // ou .None ou .ShadowDom
})
export class MonComposant {}
Composant - Hook ngOnChanges
Intermédiaire
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';

@Component({ ... })
export class ProfilComponent implements OnChanges {
  @Input() userId: number;

  ngOnChanges(changes: SimpleChanges) {
    if (changes.userId) {
      console.log('userId a changé:', this.userId);
    }
  }
}
Composant - Hook ngOnDestroy
Intermédiaire
import { Component, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';

@Component({ ... })
export class StreamComponent implements OnDestroy {
  private subscription: Subscription;

  ngOnDestroy(): void {
    this.subscription.unsubscribe(); // Nettoyage pour éviter les fuites mémoire
  }
}
Composant - Hook ngOnInit
Facile
import { Component, OnInit } from '@angular/core';

@Component({ ... })
export class ListeComponent implements OnInit {
  ngOnInit(): void {
    console.log('Le composant est initialisé !');
    // Idéal pour les appels de données initiaux
  }
}
Composant - Propriété d'entrée (@Input)
Facile
import { Component, Input } from '@angular/core';

@Component({ ... })
export class CarteUtilisateurComponent {
  @Input() nomUtilisateur: string = '';
}
Composant - Propriété de sortie (@Output)
Intermédiaire
import { Component, Output, EventEmitter } from '@angular/core';

@Component({ ... })
export class BoutonActionComponent {
  @Output() action = new EventEmitter<void>();

  onClick() {
    this.action.emit();
  }
}
Directive - Création d'une directive custom
Avancé
import { Directive, ElementRef, HostListener } from '@angular/core';

@Directive({ selector: '[appSurligner]' })
export class SurlignerDirective {
  constructor(private el: ElementRef) { }

  @HostListener('mouseenter') onMouseEnter() {
    this.el.nativeElement.style.backgroundColor = 'yellow';
  }

  @HostListener('mouseleave') onMouseLeave() {
    this.el.nativeElement.style.backgroundColor = null;
  }
}
Pipe - Création d'un pipe custom
Avancé
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({ name: 'initiales' })
export class InitialesPipe implements PipeTransform {
  transform(valeur: string): string {
    return valeur.split(' ').map(n => n[0]).join('');
  }
}