Hoe en waarom Angular elementen gebruiken – deel 1
Aan de slag
Laten we beginnen met het aanmaken van een nieuw Angular Project in ons systeem. Zorg er voor dat u de laatste versie van Angular CLI heeft geïnstalleerd. Voer het volgende commando uit in uw terminal:
$ npm install -g @angular/cli
Als deze installatie is voltooid, kunnen we het gebruiken om een nieuwe initiële toepassing in ons systeem te maken zoals dit:
$ ng new angular-app
U wordt dan gevraagd om de extra functies te selecteren die u wilt toevoegen aan uw Angular-project, dingen zoals routing en het type stylesheet-formaat. Selecteer het standaard antwoord door op de Enter/Return
toets te drukken.
De CLI installeert de benodigde Angular packages en dependencies in een map genaamd angular-app
. U kunt deze applicatie aan de browser serveren door de volgende commando’s uit te voeren:
$ cd angular-app
$ ng serve --open
// --open flag will open the browser for you
Zoals u ziet, bevat de app al een aantal dingen die we op het scherm kunnen weergeven. Maar we hebben ze niet nodig. Dus ga terug naar je code editor (ik ❤️ VS Code) en verwijder alles binnen src/app/app.component.html
bestand en schrijf een enkel <h1>
element.
<h1>Welcome To Angular Elements!</h1>
Als je de bestandsstructuur bekijkt, zul je zien dat elk component in angular bestaat uit een veelvoud van bestanden. Voor de App
component alleen al, is er een .ts
, .html
, .css
, en een spec.ts
bestand dat de tests bevat, en een module.ts
bestand. Er zal ook een optionele routing.module.ts
bestand zijn als je ervoor had gekozen om de routing functie toe te voegen aan de applicatie tijdens het maken met behulp van de CLI.
In plaats van het schrijven van al deze bestanden voor onze componenten, Angular CLI geeft ons een stenografische methode die deze bestanden voor ons zal genereren. Laten we deze methode gebruiken om een HelloWorld
component in ons systeem te maken.
$ ng g c HelloWorld
Dit enkele commando zal een map aanmaken met de naam hello-world
in de app
map. Als u dit bestand opent, vindt u deze 4 bestanden erin:
- hello-world.component.css
- hello-world.component.html
- hello-world.component.spec.ts
- hello-world.component.ts
We zullen alleen de .html
en .ts
bestanden gaan gebruiken. Er zijn extra vlaggen die we kunnen doorgeven aan het ng g c
commando. Maar om het eenvoudig en to point te houden, zal ik ze niet gebruiken. Kijk in de Angular Docs om meer te weten te komen over het gebruik van dit commando.
In het hello-world.component.ts
bestand, zult u zien dat de selector
is ingesteld op app-hello-world
. Dus, als u dit toevoegt aan de app.component.html
zoals dit:
<h1>Welcome To Angular Elements</h1>
<app-hello-world></app-hello-world>
Dan zal de inhoud van hello-world.component.html
worden weergegeven in de browser.
Onze initiële setup is nu klaar. Laten we aan de slag gaan met het gebruik van Angular Elements.
Convert A Component into Custom Element
Op dit moment hebben we een eenvoudig HelloWorld
-component dat simpelweg wat tekst op het scherm afdrukt. Laten we eens kijken hoe we dit component op een meer dynamische manier in de app kunnen invoegen. Om dit te doen, vervangen we de app-hello-world
door een div
en een button
. Laten we ook de click
listener aan de button
toevoegen, zodat wanneer iemand op de knop klikt, de HelloWorld
component kan worden getoond. Dit zal worden afgehandeld door een showMessage()
functie. Dus ga naar de app.component.html
pagina en breng de volgende wijzigingen aan:
<h1>Welcome To Angular Elements</h1>
<div></div>
<button (click)="showMessage()">Display?</button>
We moeten dan de showMessage()
functie definiëren in het app.component.ts
bestand. Hier zullen we gewone DOM manipulatie gebruiken om de div
te krijgen door het te selecteren met behulp van zijn id
of hello
. Daarna gebruiken we de innerHTML
functie om de app-hello-world
component in te voegen:
export class AppComponent {
showMessage() {
const hello = document.getElementById('hello');
hello.innerHTML = '<app-hello-world></app-hello-world>';
}
}
U kunt naar uw browser gaan en op de knop klikken, maar ik kan u nu al vertellen dat er niets zal gebeuren. Maar als je dan naar de dev tools van de browser gaat en daar kijkt, zul je zien dat het HelloWorld
component is ingevoegd.