Angular v19 zal standalone: true de standaard maken voor componenten, directives en pipes.
In versie 14 introduceerden Angular een ontwikkelaars-preview van de “standalone” functie, die het voor het eerst mogelijk maakte om een applicatie te bouwen zonder afhankelijk te zijn van NgModules. Sindsdien is standalone gestabiliseerd en is het door het Angular-team de aanbevolen manier geworden om Angular-code te schrijven. De CLI genereert standaard componenten met standalone: true en de Angular-documentatie leert nieuwe Angular-ontwikkelaars eerst standalone. De adoptie is sterk en blijft groeien in het Angular-ecosysteem, zowel in de grootste Angular-applicaties die bij Google zijn geschreven als in applicaties over het hele internet.
Standalone maakt Angular niet alleen eenvoudiger om te leren en mee te beginnen, maar heeft ook een aantal spannende nieuwe functies mogelijk gemaakt. In @angular/router vereenvoudigt loadComponent lazy loading op route-niveau aanzienlijk en is het afhankelijk van standalone-functionaliteit. De Directive Composition API biedt een beter compositiemodel voor componentgedrag door standalone directives toe te staan in de declaratie van een hostcomponent of directive. En natuurlijk maken Deferrable Views het mogelijk om standalone componenten en directives op template-niveau transparant lazy te laden, waardoor het eenvoudiger dan ooit wordt om je Angular-applicaties te optimaliseren.
In versie 19 zetten Angular de volgende stap en schakelt Angular de standaardinstelling van de standalone-vlag om voor componenten, directives en pipes, zodat je nooit meer standalone: true hoeft te typen.
Wat als je nog steeds NgModules gebruik?
Dat is geen probleem — Angular zijn niet van plan de standalone-optie of NgModules zelf te verouderen. Je kunt nog steeds NgModule-componenten schrijven door standalone: false op te geven in de component-decorator.
Wat moet je doen voor mijn bestaande standalone of NgModules code?
Als onderdeel van ng update voor versie 19 voert Angular een geautomatiseerde migratie uit die:
- standalone: true verwijdert voor bestaande standalone componenten, aangezien dit de nieuwe standaard wordt.
- standalone: false toevoegt aan bestaande NgModule-componenten, zodat ze blijven werken.
- Optioneel kun je de compileroptie strictStandalone instellen om af te dwingen dat er alleen standalone componenten in je applicatie worden geschreven.
Hoe zit het met FormsModule en andere npm-bibliotheken met NgModules?
Hier verandert niets. Standalone componenten kunnen nog steeds NgModule-afhankelijkheden importeren zoals nodig, zelfs wanneer de compileroptie strictStandalone is ingeschakeld.
Als je een bibliotheek publiceert op NPM, hoef je niets te doen — je componenten zullen correct functioneren wanneer ze door gebruikers worden geïmporteerd, ongeacht of ze versie 19 met de nieuwe standaardinstelling gebruiken of niet.