Wir bieten Schulungen an! Von Anfänger bis Experte - inklusive Agentic AI Coding!
Artikel Header Bild zu Der AngularJS Component Helper

Der AngularJS Component Helper

Robin Böhm 3 Min. Lesezeit

In diesem Artikel stelle ich euch den neuen Component-Helper vor. Wie uns der aktuelle Changelog verrät ist dieser nun endlich mit der Version 1.5.0-beta2 im Framework gelandet. Dieser ermöglicht euch eine sehr handliche schreibweise von Komponenten. Die Syntax ist hierbei sehr an den @Component-Decorator von Angular angelehnt.

angular.module("myMod").component("myComp", {
  template: "<div>My name is {{$ctrl.name}}</div>",
  bindings: { name: "=" },
});

Ihr könnt die komplette Diskussion zu diesem Feature Request im Github Issue nachlesen. In folgender Tabelle sehr ihr eine Übersicht der wichtigsten Konfigurationen. Die komplette Beschreibung könnt ihr in der API Doc nachlesen.

NameDescriptionDefault
bindingsDefine DOM attribute binding to component properties.{ }
templateTemplate as string’ ’ (Empty String)
templateUrlTemplate via URLundefined
transcludeAccess innerHTMLtrue
controllerDefine a constructor functionfunction(){ }
controllerAsAn identifier name for a reference to the controller.$ctrl

Der Component-Helper bietet euch hierbei einen einfachen Wrapper für mit der Zeit recht komplex gewordene .directive(...) Funktion. Er ist ist also so ähnlich zu verstehen wie die Factory-, Service-, Value-Helper für die .provider(...) Funktion.

Neben der Reduzierung von Komplexität ermöglicht uns der Helper ebenfalls das einfache Einhalten von Best Practices und nährt sich der Definition von Direktiven und Komponenten von Angular2 an. Direktiven sind hierbei generelle HTML-Erweiterung, welche Verhalten kapseln. Komponenten sind eine spezielle Art von Direktiven, welche ein eigenen (Shadow-)DOM besitzen und UI Widgets oder Anwendungs-Komponenten darstellen. Somit ist dies ein weiterer Schritt zur immer sanfter werdenden Migration zu Angular2.

// AngularJS 1.4.x way to create a component
angular.module("X").directive("myComponent", function () {
  return {
    scope: {},
    template: "<div>{{$ctrl.data.name}}</div>",
    bindToController: {
      data: "=",
    },
    controller: function () {},
    controllerAs: "$ctrl",
  };
});

// AngularJS 1.5.x way to create a component
angular.module("X").component("myComponent", {
  template: "<div>{{$ctrl.data.name}}</div>",
  bindings: {
    data: "=",
  },
});

Die beiden hier gezeigten Varianten erstellen eine identische Komponente. Wir müssen allerdings nichtmehr den ganzen Boilerplate-Code schreiben der mittlerweile eigentlich bei 90% der in AngularJS erstellten Direktiven immer wieder kopiert wurde. Und genau DAS ist was AngularJS meiner Meinung nach groß gemacht hat. Löse deine fachlichen Anforderungen ohne dich ständig durch Copy&Paste Kämpfen zu müssen und konzentriere dich auf das wesentliche. Die Einführung der .component(...) Funktion ist hierbei wieder ein Schritt in die richtige Richtung.

Tip für TypeScript Nutzer

Ihr könnt euch nun sehr einfach ein eigenen Decorator schreiben, mit dem Ihr heute schon nahezu die Angular2 Syntax in euren AngularJS Anwendungen benutzen könnt. In unseren Projekten sieht das z.B. so aus:

@Component({
  selector: 'group-overview',
  providers: ['$http', 'MyDataService'],
  bindings: {
    group: BoundedAs.Binding
  },
  templateUrl: 'group-overview/group-overview.component.html'
})
class GroupOverviewCmp{ ... }

[[cta:training-bottom]]

💡 Keine Lust zu lesen?

Nicht jeder lernt am besten aus Büchern und Artikeln. Lernen darf interaktiv sein und Spaß machen. Wir bieten dir auch Angular Intensiv-Schulungen an, damit du tiefer in die Thematik einsteigen kannst.

Mehr Informationen zur Angular-Schulung
Teilnehmer:innen in der Veranstaltung Angular-Intensiv-Workshop

Fazit

Die .component(...) Funktion vereinfacht die Erstellung von Komponenten ungemein und ermöglicht das sehr einfache einhalten von Best Practices. Es stellt eine wichtige Verbindung zu den Konzepten von Angular her und geht somit weiter in die Richtung der immer sanfter werdenden Migrationsmöglichkeiten. In Verbindung mit TypeScript und dem @Component Decorator kann man den nächsten Schritt ebenfalls sehr einfach erreichen. Wer die Möglichkeit hat sollte auf jeden Fall auf die Version 1.5.x upgraden oder sein neues Projekt hiermit starten.

Robin Böhm

Robin Böhm

Gründer von Angular.DE
Entwickler, Trainer und Buch-Autor

Robin beschäftigt sich seit 2012 intensiv mit der Erstellung client-seitiger Web-Applikationen. 2014 hat er das erste deutschsprachige Buch zum Thema AngularJS geschrieben und ist Mitgründer der Platform Angular.DE. Mit seinem Schulungs-Team hat er bereits über 1200 Unternehmen den erfolgreichen Start mit Angular ermöglicht.

Weitere Artikel

Migration AngularJS zu Angular
angularjs angular
Jonathan Schneider •

Migration AngularJS zu Angular

Migration mit ngUpgrade leichtgemacht. Eine Zusammenfassung über alle wichtigen Schritte, wie ihr eure AngularJS App zu einer Angular App migrieren könnt.

Migration AngularJS zu Angular [Video]
angularjs angular
Robin Böhm •

Migration AngularJS zu Angular [Video]

Angular Version >2.x kommt … und es macht alles anders! Ist das wirklich so? Was hat das für meine Anwendung zu bedeuten? Mehr darüber in diesem Artikel!

Newsletter

Bleibe auf dem Laufenden mit den neuesten Angular News, Tutorials und Schulungsangeboten.

Newsletter abonnieren