Sie sind hier:
Wissen
Telefon (Mo-Fr 9 bis 16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Medien
Übersicht
Lexikon/Glossar
Spickzettel
Weblog
Konferenzvorträge
Fachbücher
Fachartikel
Leserportal
Autoren gesucht!
Literaturtipps
Praxisnahe Fallbeispiele
Downloads
Newsletter
.NET
Startseite
.NET 8.0
.NET 7.0
.NET 6.0
.NET 5.0
.NET Core
.NET 4.0/4.5.x/4.6.x
.NET 3.0/3.5
.NET 2.0
.NET-Lexikon
Programmiersprachen
Entwicklerwerkzeuge
Klassenreferenz
Softwarekomponenten
Windows Runtime
World Wide Wings-Demo
Versionsgeschichte
Codebeispiele
ASP.NET
Artikel
Bücher
Schulung & Beratung
Konferenzen/Events
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Forum
Schulung & Beratung
PowerShell
Startseite
Commandlet-Referenz
Codebeispiele
Commandlet Extensions
Versionsgeschichte
Schulungen+Beratung
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Scripting
Startseite
Lexikon
FAQ
Bücher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
.NET-Scripting
Forum
Schulung & Beratung
Nutzer
Anmeldung/Login
Buchleser-Registrierung
Gast-Registrierung
Hilfe
Website-FAQ
Technischer Support
Site Map
Tag Cloud
Suche
Kontakt
Erklärung des Begriffs: Angular-Komponente
Zur Stichwortliste unseres Lexikons
Was ist
Angular-Komponente
?
Bei Angular ist keine direkte Manipulation des HTML-DOM vorgesehen, sondern eine Trennung nach dem Model-View-Controller (
MVC
)-Muster: Der Entwickler definiert im View sogenannte
Template
s, die statische HTML-Tags mit dynamischen Inhalten aus dem Controller verbinden. Diese Mischung gestattet das Framework durch benutzerdefinierte HTML-Syntaxelemente ("
Direktive
n"). In
AngularJS
1.x ist eine
Direktive
an sich schon ein komplexes Gebilde (vgl. [2]), das durch die Controller und Scopes weitere Herausforderungen birgt.
In der neuen Version hat
Google
diese Architektur stark vereinfacht: Ein benutzerdefiniertes Tag in einer Seite wird durch eine mit @Component dekorierte
Komponente
nklasse repräsentiert. Der selector (siehe Listing 1) legt den Tagnamen fest. Die mit der
Komponente
verbundene Vorlage ("
Template
") kann der Webentwickler direkt als Zeichenkette in der Eigenschaft template angeben, was sich aber nur bei sehr kurzen HTML-Blöcken anbietet. Ansonsten verweist man mit templateUrl auf eine .html-Datei (siehe Listing 2). Sofern man beides angibt, gewinnt die Eigenschaft template. Den bisher notwendigen Verweis der Vorlage auf den Controller mit ng-Controller gibt es nicht mehr. Anders als beim Vorgänger ist es in Angular 2.x nicht mehr möglich, dass eine
Komponente
ein komplettes Tag ersetzt; das
Template
der
Komponente
liefert immer nur neuen Inhalt für das Tag.
Eine
Komponente
kann auch eigene
CSS
-Vorgaben (Inline oder als eigenständige Datei) besitzen, die allein für die Vorlage dieser
Komponente
gelten, vorausgesetzt, der Entwickler bezieht nicht mit den Zusätzen :host bzw. /deep/ auch die über- und unterordneten
Komponente
n explizit mit ein. In der Vorlage für die Flugliste in Listing 2 sieht man mit <Flugdetail> wieder ein benutzerdefiniertes Tag. Dies ist eine untergeordnete
Komponente
, die über Eigenschaften und Ereignisse mit der übergeordneten
Komponente
interagiert. Durch die Dekoratoren @Input() und @Output() muss der Entwickler klar festlegen, welche Eigenschaften und Ereignisse für andere
Komponente
n im Zugriff sind. Zur Ereigniskommunikation bietet Angular 2.x einen eigenen Event Emitter.
Eine
Komponente
löst im Laufe ihres Lebenszyklus diverse Ereignisse aus, in die der Entwickler sich einhängen kann. Listing 1 zeigt dies am Beispiel des Ereignisses OnInit, das aus der Sicht von
TypeScript
eine Klasse ist, die wie alle anderen Typen zu Beginn mit import { OnInit, … } from '@angular/core' einzubinden ist. Weitere Ereignisse stehen im Zusammenhang mit der
Datenbindung
(ngOnChanges, ngDoCheck).
Das Angular-Entwicklungsteam verwendet in den Beispielen (siehe [
https://github.com/angular/angular.io/tree/master/public/docs/_examples
]) die
Namenskonvention
(siehe [
https://angular.io/docs/ts/latest/guide/style-guide.html#
!#naming]), dass die Namen aller
Komponente
nklassen und deren zugehörige
Template
dateien auf dem Wort "Component" enden. Dieses lange Suffix lenkt aber vom eigentlichen Namen ab, was gerade in großen Projekten nicht erwünscht sein kann. Auch wenn das Beispiel hier klein ist, verzichtet es auf diese ablenkenden Suffixe.
Listing 1:
Komponente
nklasse für Flugliste
// Angular Library-Importe
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import {
Observable
} from 'rxjs/
Observable
';
// Importe für eigene Klassen
import { Flug } from '../Modell/Flug'
import { FlugService } from '../Services/FlugService'
import { Flugdetail } from '../Flugdetail/Flugdetail'; // für Event
@Component({
selector: 'Flugliste',
templateUrl: 'App/Flugliste/Flugliste.html',
providers: [FlugService] // lokale
Registrierung
eines Dienstes für DI
})
export class Flugliste implements OnInit {
constructor(private flugService: FlugService,
private router: Router) { // hier wird FlugService und Router injiziert
}
status: string;
flugSet: Flug[]
ngOnInit() {
this.flugService.getAll(daten => { //
Callback
this.flugSet = FlugService.flugSet;
this.status = this.flugSet.length + " Flüge geladen.";
});
}
Loeschen(flug: Flug) {
this.flugService.delete(flug); // Dienst aufrufen
this.status = `Flug ${flug.FlugNr} gelöscht!`;
}
Aendern(flug: Flug) {
let link = ['/edit', flug.FlugNr];
this.router.navigate(link);
}
// Event-
Handle
r für Nachricht von untergeordneter
Komponente
onFlugGeloescht(flug: Flug) {
this.status = `Flug ${flug.FlugNr} gelöscht!`;
this.flugSet = this.flugService.flugSet; //
Datenbindung
aktualisieren }
}
Listing 2: Angular-Vorlage für die Flugliste
<ul>
<li *ngFor="let f of flugSet ; let istGerade = even; let i = index">
<span [ngClass]="{'text-primary': istGerade, 'text-info': !istGerade}">
<span class="badge">{{i+1}}: Flug #{{f.FlugNr | fixedLenNumber:3}}</span>
<Flugdetail [flug]="f" (flugGeloeschtEvent)="onFlugGeloescht($event)"></Flugdetail>
<button typ="info" *ngIf="f.FreiePlaetze>0" (click)="Aendern(f)">Ändern</button>
<button typ="warning" [disabled]="f.FreiePlaetze<=0 || f.AbflugOrt=='Essen'" (click)="Loeschen(f)">Löschen</button>
</span>
</li>
</ul>
Querverweise zu anderen Begriffen im Lexikon
Namenskonvention
Registrierung
Datenbindung
Observable
Komponente
TypeScript (TS)
Direktive
AngularJS
Callback
Template
Google
Handle
Cascading Style Sheet (CSS)
Mode-View-Controler Framework (MVC)
Beratung & Support
Anfrage für Beratung/Consulting zu Angular-Komponente
Gesamter Beratungsthemenkatalog
Technischer Support zum Angular-Komponente
Schulungen zu diesem Thema
Angular für Umsteiger von AngularJS 1.x / Migration von AngularJS auf Angular
Anfrage für eine individuelle Schulung zum Thema Angular-Komponente
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
.NET 9.0 Update: Die Neuerungen in .NET 9.0 gegenüber .NET 8.0
PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
.NET 8.0 Update: Die Neuerungen in .NET 8.0 gegenüber .NET 7.0
Blazor 8.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 8.0, C# 12.0 und Visual Studio 2022
Moderne Datenzugriffslösungen mit Entity Framework Core 8.0
C# 12.0 Crashkurs
Cross-Plattform-Apps mit .NET MAUI entwickeln
Blazor 7.0: Blazor WebAssembly, Blazor Server und Blazor Hybrid
C# 11.0 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 7.0
PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
App Engineering: SwiftUI, Jetpack Compose, .NET MAUI und Flutter
Vue.js 3 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 6.0
Blazor 6.0: Blazor WebAssembly, Blazor Server und Blazor Desktop
C# 10.0 Crashkurs
Cross-Plattform-Apps mit Xamarin.Forms entwickeln
Developing Web Components with TypeScript: Native Web Development Using Thin Libraries
PowerShell – kurz & gut
C# 9.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET 5.0, .NET Core und Xamarin
ASP.NET Core Blazor 5.0: Blazor WebAssembly und Blazor Server - Moderne Single-Page-Web-Applications
Windows PowerShell 5 und PowerShell 7: Das Praxisbuch
Moderne Datenzugriffslösungen mit Entity Framework Core 5.0
ASP.NET Core Blazor 3.1/3.2: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
ASP.NET Core Blazor 3.0/3.1: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
Moderne Datenzugriffslösungen mit Entity Framework Core 3.1
C# 8.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
Moderne Datenzugriffslösungen mit Entity Framework Core 3.0
Windows PowerShell 5.1 und PowerShell Core 6.1 - Das Praxishandbuch
Moderne Datenzugriffslösungen mit Entity Framework Core 2.1/2.2
Moderne Webanwendungen für .NET-Entwickler: Server-Anwendungen, Web APIs, SPAs & HTML-Cross-Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript
C# 7.3 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
Modern Data Access with Entity Framework Core: Database Programming Using .NET, .NET Core, UWP, and Xamarin with C#
Windows PowerShell und PowerShell Core - Der schnelle Einstieg: Skriptbasierte Systemadministration für Windows, Linux und macOS
Programmierung in Python
C# 7.2 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1
Effizienter Datenzugriff mit Entity Framework Core: Datenbankprogrammierung mit C# für .NET Framework, .NET Core und Xamarin
Moderne Datenzugriffslösungen mit Entity Framework Core 2.0
Windows PowerShell 5 und PowerShell Core 6 - Das Praxishandbuch
Angular - Das Praxisbuch zu Grundlagen und Best Practices
Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
Moderne Datenzugriffslösungen mit Entity Framework Core 1.1 und 2.0-Preview2
Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
Introducing Regular Expressions: JavaScript and TypeScript
Introducing Web Development
Introducing Bootstrap 4
Programming Web Applications with Node, Express and Pug
Einführung in TypeScript: Grundlagen der Sprache TypeScript 2
Pug – Die Template-Engine für node.js
Web-Programmierung mit Node, Express und Pug
Windows PowerShell 5 – kurz & gut
Moderne Datenzugriffslösungen mit Entity Framework Core 1.1
Windows PowerShell 5.0 - Das Praxishandbuch
PHP 7 und MySQL: Von den Grundlagen bis zur professionellen Programmierung
Windows Scripting Lernen
.NET Praxis - Tipps und Tricks für .NET und Visual Studio
Grundlagen für Web-Entwickler: Protokolle, HTML und CSS
Bootstrap 3 - Stile und Komponenten
Bootstrap 4 - Stile und Komponenten
Einführung in JavaScript: ECMAScript 5
Einführung in node.js
express – Middleware für node.js
JADE – Die Template Engine für node.js
Reguläre Ausdrücke in JavaScript
Moderne Datenzugriffslösungen mit Entity Framework 6
C++ Standardbibliothek
AngularJS: Moderne Webanwendungen und Single Page Applications mit JavaScript
Microsoft SharePoint Server 2013 und SharePoint Foundation: Das umfassende Handbuch
SQL Server 2014 für Professionals: Hochverfügbarkeit, Cloud-Szenarien, Backup/Restore, Monitoring & Performance
Moderne Webanwendungen mit ASP.NET MVC und JavaScript
Windows PowerShell 4.0 - Das Praxishandbuch
JavaScript: Das umfassende Handbuch, inkl. HTML5, JavaScript-Frameworks, jQuery, OOP
C++11 für Programmierer
C++ kurz und gut
Microsoft ASP.NET 4.5 - Entwicklerbuch
Moderne Webanwendungen mit ASP.NET MVC
Verteilte Systeme und Services mit .NET 4.5
Scripting mit Windows PowerShell 3.0 - Der Workshop: Skript-Programmierung mit Windows PowerShell 3.0 vom Einsteiger bis zum Profi
Windows 8 für Administratoren
Windows 8.1 - Das Handbuch (27. November 2013)
Windows Store Apps entwickeln mit C# und XAML - Crashkurs
.NET 4.5 Update
Windows Scripting Lernen
WPF 4.5 und XAML
Datenbankprogrammierung mit .NET 4.5
C++11: Der Leitfaden für Programmierer zum neuen Standard
Verteilte Systeme und Services mit .NET 4.0
Microsoft ASP.NET 4.0 mit C# 2010 - Entwicklerbuch
Agile Software Engineering with Visual Studio
Datenbankprogrammierung mit .NET 4.0. Mit Visual Studio 2010 und SQL Server 2008 R2
Microsoft SharePoint Server 2010 und SharePoint Foundation 2010
Microsoft SQL Server 2008 R2 - Das Entwicklerbuch
Microsoft Viusal C# 2010
Office 2010 Programmierung mit VSTO und .NET 4.0: Word, Excel und Outlook erweitern und anpassen
Programmieren mit dem ADO.NET Entity Framework
.NET 4.0 Crashkurs
Visual Basic 2010: Grundlagen, ADO.NET, Windows Presentation Foundation
.NET 4.0 Update
Windows PowerShell 2.0 - Das Praxishandbuch
Windows 7 im Unternehmen
Agile Muster und Methoden
Ajax
ASP.NET 4.0
ASP.NET 4.0 mit Visual C# 2010
JavaScript
PHP 5-Migration
Scripting mit Windows PowerShell 2.0 - Der Einsteiger-Workshop
SQL Server 2008 R2: Das Programmierhandbuch. Inkl. ADO.NET 3.5, LINQ to Entities und LINQ to SQL
Visual Basic 2010
Windows PowerShell 2.0 - Crashkurs
Windows Server 2008 R2
Windows Scripting
Windows Scripting Lernen
Data Mining mit Microsoft SQL Server
Windows 7 für Administratoren
Microsoft ASP.NET 3.5 mit Visual Basic 2008 - Entwicklerbuch
.NET 3.5
Essential PowerShell
.NET 3.5 Crashkurs
Webanwendungen mit ASP.NET 3.5 und AJAX Crashkurs
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr