Ik geef training in frontend tools en stacks als HTML, JavaScript, TypeScript, React, Angular en Vue. Ik schrijf boeken en artikelen over tal van (ICT-) onderwerpen. Ik was lead developer en directeur bij Yindo - Jouw digitale bibliotheek. Je kunt mij volgen op Twitter(@PeterKassenaar).

In dit blog vind je persoonlijke artikelen, die niet noodzakelijk tech-gerelateerd zijn.

Views and expressions are my own.

Terug naar de algemene site.

07mei

CKEditor 5 gebruiken in een Angular-project

Zo nu en dan kom je als webdeveloper een project tegen waarin het nodig is dat gebruikers zelf rich text kunnen invoeren. Denk aan een blog, een forum of een chatbox met opmaakmogelijkheden. Een standaard <textarea> element voldoet dan niet meer.

Er zijn tal van oplossingen beschikbaar, maar de twee bekendste zijn waarschijnlijk:

Beide editors zijn beschikbaar voor tal van frameworks (Angular, React, Vue) maar daarnaast ook voor vanilla JavaScript projecten en andere omgevingen.

image

In dit artikel lees je hoe je CKEditor 5 gebruikt. De focus ligt daarbij op een basisinstallatie in een leeg Angular-project. Via de documentatie kun je allerlei extra configuraties uitproberen, meer properties en events leren enzovoort.

TLDR; Just show me the codez…https://github.com/PeterKassenaar/ng-ckeditor-example

Inhoud

  1. Een blanco Angular project maken.
  2. CKEditor 5 installeren
  3. CKEditor toevoegen aan een component
  4. Gegevens uitlezen uit de editor en verder verwerken
  5. Vervolgstappen

1. Angular Project maken

We gebruiken CKEditor 5 in een standaard Angular CLI-project. Ik ga er van uit dat Angular CLI is geïnstalleerd. Zo niet, volg dan de installatiestappen op cli.angular.io.

ng new ckeditor --defaults

Als er toch nog om gevraagd wordt: neem de standaardinstellingen van CLI over met Enter. Je hebt dan een blanco project. Start dit en ga in de browser naar http://localhost:4200.

npm start

Open /src/app/app.component.html en verwijder alle (standaard)inhoud.

Vervang dit door een eenvoudige koptekst:

<h1>CKEditor 5 in een Angular-project</h1>
image

2. CKEditor 5 installeren

Het installeren van CKEditor 5 bestaat uit twee stappen. Je moet de Angular Module installeren en een build kiezen. Je kunt kiezen uit een klassieke build, een inline editor, een balloon editor en meer. Wij kiezen de klassieke editor (=de vervanging van <textarea>).

npm install --save @ckeditor/ckeditor5-angular

npm install --save @ckeditor/ckeditor5-build-classic

Vervolgens moet je – als bij elke Angular-module – de editormodule toevoegen aan je hoofdmodule. In ons geval is dat app.module.ts.

3. CKEditor toevoegen aan een component

Open app.component.ts en importeer hierin de classic editor die je eerder hebt geïnstalleerd. Maak hem daarna beschikbaar via een property in je class:

Tot slot gebruik je de tag <ckeditor> in je template om de rich text editor te plaatsen:

SNAGHTML6e614c0a

Behalve de data rechtstreeks in de template te zetten met data=”<h2>…</h2>” kun je hiervan uiteraard ook een variabele maken en deze binden aan de template. Vergeet niet om het attribuut data in dat geval dynamisch te maken met […]. De code in de HTML wordt dan iets als

[data]=”templateData”

en in app.component.ts wordt de variabele ingesteld. Het is niet verplicht om vooraf data op te geven. Je mag uiteraard ook met een lege editor beginnen.

templateData=’<h2>Welkom bij ….</h2>’;

4. Gegevens uitlezen en verwerken

Uiteraard wil je iets doen met de tekst die in CKEditor is getypt. Hiervoor is de event (change) beschikbaar en de methode .getData(). We gebruiken een aantal hulpvariabelen en voegen een knop toe die de getypte tekst als HTML in de component template toont.

In werkelijkheid wil je de tekst waarschijnlijk naar een backend sturen om op te slaan. Gebruik in dat geval een service die HttpClient implementeert, enzovoort. Behandeling daarvan valt zoals je begrijpt buiten het bestek van dit artikel.

Pas eerst de template als volgt aan.

Wijzig app.component.ts om de gegevens te verwerken:

image

5. Conclusie

Dit artikel liet zien hoe je op eenvoudige wijze CKEditor 5 toevoegt aan een Angular-project. Uiteraard is er veel meer mogelijk dan in het kader van dit artikel kon worden besproken. Kijk bijvoorbeeld naar:

  • Integratie met [(ngModel)]
  • Welke @Input() properties beschikbaar zijn
  • Welke @Output() properties beschikbaar zijn
  • Op welke manier je de editor kunt stylen met CSS
  • …en uiteraard alle overige documentatie

Lees hiervoor de informatie op https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/angular.html.

Cross-site scripting (XSS)

Let er wel op dat áls je de tekst naar een backend stuurt, dat je kale HTML naar een API stuurt. Je backend moet dit als onbetrouwbare bron behandelen, en HTML altijd escapen. Een kwaadwillende gebruiker zou <script> tags kunnen typen met hierbinnen kwaadaardige code. Als je backend hierop niet is voorbereid, wordt vervolgens de scriptcode uitgevoerd! Dit wil geen enkele developer. Let hier dus goed op als je een rich text editor gebruikt (maar eigenlijk geldt dit voor alle user-input die je verzamelt. Escape altijd de HTML-tekens in de code.

Voorbeeldcode downloaden

Het eenvoudige project dat we hier gemaakt hebben, is beschikbaar op Github:

Meer weten over Angular? Boek een training via www.angulartraining.nl

Of lees een boek: Web Development Library – Angular

Peter Kassenaar
-- 7 mei 2020

07maart

Angular 2, Angular 4 of gewoon “Angular”?

Na een voorbereidingstijd van ruim 2,5 jaar is in september 2016 eindelijk de final release van Angular 2 vrijgegeven. Tegelijkertijd introduceerde Team Angular een nieuwe manier van versiebeheer in Angular.

Met Angular 2 werd semantic versioning of kortweg semver ingevoerd. Voorheen hadden we releases als Angular 1.4, Angular 1.5 enzovoort. Met ingang van Angular 2 is het versiesysteem met drie cijfers ingevoerd, bijvoorbeeld 2.2.1, waarbij de drie cijfers staan voor een major.minor.patch-versie. Dit is een geaccepteerde standaard in de softwarewereld en betekent het volgende:

  • 2 – Majorversie- bij een upgrade mogelijk breaking changes ten opzichte van eerdere major versies.
  • 2 – Minorversie, nieuwe features zonder breaking changes.
  • 1 – Patchversie, met bugfixes. Geen breaking changes.

Het semver-systeem is sinds de release van Angular 2 trouw gevolgd en op het moment van schrijven is Angular 2.4.0 de actuele versie.

Angular Roadmap

Tijdens zijn keynote op de conferentie NG-BE in december 2016 gaf Angular Team Lead Igor Minar een toelichting op de roadmap van Angular. In maart 2017 zal Angular 4 verschijnen.

Angular 4 - backwards compatible met Angular 2 - (C) Igor Minar

“Wat? Angular 4? Wat is er met Angular 3 gebeurd? Betekent dit weer dat ik een compleet nieuw framework moet leren?”

Het antwoord op deze vragen is gelukkig een duidelijk NEE.

Angular 4 is  - zoals de slide al aangeeft – backwards compatible met alle Angular 2-code die je tot nu toe geschreven hebt. Je hoeft niet opnieuw een framework te leren. De overgang van Angular  2 naar 4 zal (in tegenstelling tot de overgang van Angular 1 naar Angular 2) pijnloos verlopen. Wel zullen er nieuwe onderdelen worden geïntroduceerd, zoals een nieuwe view compiler die kleinere code oplevert en betere AoT-compiling. Maar verder is het enige dat gewijzigd is, het versienummer.

Meer informatie hierover vind je bijvoorbeeld in de blogpost van Igor Minar.

Waar is Angular 3 gebleven?

Het zou natuurlijk logisch zijn om na Angular 2 eerst Angular 3 uit te brengen. Maar Angular bestaat uit allemaal losse onderdelen (core, router, forms, compiler en meer), met elk hun eigen versienummers. Zo is een zeer belangrijk onderdeel als de router van Angular op dit moment al bij versie 3.3 aangeland. En als deze ook geüpgraded zou worden, zouden we Angualr 3 met routerversie 4 krijgen. Dat is ook verwarrend.

Daarom is  voor de strategie gekozen om vanaf versie 4 alles gelijk te trekken. In het projectbestand package.json staan straks dus allemaal dezelfde versienummers. Dat is wel een verademing. Maar voordat het zover is, moeten we eerst even door de zure appel met versienummers heen bijten.

Snelle upgrades

Het zal niet bij Angular 4 blijven. Team Angular heeft een ambitieus schema samengesteld voor de toekomst. Elke zes maanden zal een nieuwe versie van Angular verschijnen:

Tot ziens versienummers, Hello Angular

Om die reden ziet Team Angular ook liever vandaag dan morgen dat versienummers in projecten verdwijnen. “It’s just Angular”, aldus Igor Minar. Dit betekent dat we vanaf dit moment eigenlijk nog maar twee grote stromingen overhouden in Angular-land:

  • AngularJS – de eerste versie van het framework, gebaseerd op de 1.x-reeks.
  • Angular – alles wat Angular 2 en hoger is. Het versienummer is hierbij van ondergeschikt belang. Gebruik het liever niet meer.

Onze trainingen

Onze trainingen en voorbeeldcode wordt vanaf het verschijnen van Angular 4 (of vanaf nu dus kortweg: Angular), ook aangepast aan de nieuwe versienummers. Inhoudelijk wordt de training telkens bijgewerkt volgens de laatste standaardaarden.

Maar je weet nu ook: het versienummer doet er eigenlijk niet meer zo toe.

Wil je een Angular-training organiseren binnen je bedrijf of instelling of de mogelijkheden bespreken, aarzel dan niet om contact op te nemen.

-- Peter Kassenaar
7 maart 2017.