Kann mir evtl. jemand erläutern, warum das („plain vanilla javascript“) unter TypeScript (JS ist bekanntlich ne Teilmenge davon) in der ngAfterViewInit()-Funktion nicht geht? Ich meine die Alertbox zeigt mir ja JSON an, mit allen CSS-Attributen…
Also: Ich sehe da keinen rationalen Grund, warum dies nicht funktionieren sollte. Und: Bitte keine „Tipps“ in der Art „in Angular macht man das aber anders!!“. Es geht um die Sache an sich, die Frage ist somit eher akademischer Natur…
Soviel ich weiss muss ich diese Marker-Interfaces (wird es wohl sein, ein leeres Interface welche nur ne Klasse speziell kennzeichnet) bei Angular 8 gar nicht mehr explizit implementieren.
Die werden schon im Hintergrund implementiert soviel ich weiss, und zwar alles. Habe alle diese Events mit einem alert getestet, dieses erscheint immer:
Also: Meine Klasse implementiert kein einziges Interfaces dieser Art, trotzdem werden all diese Funktionen ausgeführt, wenn ich diese in der Klasse erwähne.
Ich denke das Beispiel auf der Angular-Seite (export class PeekABoo implements OnInit) ist aus einer älteren Angular-Version als 8 (welche ich aktuell verwende)
Im ganzen Internet gibt es gemäss meiner Recherche KEIN EINZIGES Angular-Forum, ausser diese äusserst mühsam zu bedienenden „Google Groups“… und die Seite hackr.io hat die Angular-Sektion offenbar geschlossen.
Unglaublich, dass es keine Angular-Community im Netz gibt - habe gemeint diese Technologie sei etabliert. (Ist wohl eher ne Art „Geheimwissenschaft“ ;-))
Habe noch alle anderen „Hooks“ ausprobiert - keiner scheint ein explizites Implementieren der entsprechenden Interfaces vorauszusetzen.
Dem zufolge muss das „peek-a-boo“-Beispiel von hier obsolet sein und aus einer früheren Angular-Version stammen. (Falls das wirklich der Fall ist: Sind die nicht mal in der Lage, die Doku entsprechend anzupassen, WTF?)
Und noch was: Mit dem getElementsByClassName(…)[0]-Ansatz meckert der Transpiler was von ERROR in src/app/app.component.ts:145:28 - error TS2339: Property 'style' does not exist on type 'Element'.
…und dies obwohl alert(JSON.stringify(style)); dann doch nicht „undefined“, sondern korrektes JSON mit style-Infos ausgibt.
Angular ist meiner Meinung nach die totale Degeneration, schlimmer kann es nicht mehr werde was die Anwendung von Webanwendungen betrifft - Angular dient einzig und alleine dazu, wie IT-Welt komplizierter zu machen, somit den Kunden überflüssig/sinnlos komplizierte Lösungen aufzuschwatzen und damit möglichst viel Kohle zu generieren.
(Ich meine man kann ABSOLUT PROBLEMLOS irgendwelche Business-Anwendungen selbst komplett ohne AJAX erstellen, sehe nicht wo das Problem liegt. Das Problem ist eher, dass die Menschheit wohl dumm und oberflächlich ist, und primär auf irgendwelche GUIs wert legt als auf den betriebswirtschaftlichen Nutzen der Software.)
Kann man, muss man aber nicht. Wenn man nix implementiert, dann kann man die Hook-Funktionen reinschreiben (oder auch nicht).
Wenn man was implementiert, dann MUSS man die dazu gehörige Funktion überschreiben. Sonst gibt’s nen Transpiler-Error.
Unlogischer, schräger und inkonsistenter könnte man es wohl nicht machen. Als alter Java-Hase stehen mir bei solchen Sachen definitiv „die Haare zu Berge“…