dedlfix: Angular mit RxJS reaktiv gestalten?

Beitrag lesen

Tach!

<input (keyup)="keyup_D(D)" [(ngModel)]="D">

Ich würde den Reactive-Forms-Ansatz nehmen, nicht den template-driven. Der Unterschied ist, dass du im Template die Eingabeelemente lediglich benennst (formControl(Name)), und alle Eventhandler im Controller setzt (über das valueChanges Observable), statt die Eventhandler im Template zu setzen, die dann Methoden im Controller aufrufen.

Mein Gedanke ist nun, dass die Funktionen D_ds (…), d_Ds (…), s_Dd (…), foo_Area auf Äderungen lauschen, um dann sich entsprechen ausführen.

Ähm ... nein. Die Formeln arbeiten selbständig. Die sollten nichts von Dingen der Benutzerführung oder des Programmablaufs wissen. Die müssen nur entsprechend aufgerufen werden, je nachdem welches Ereignis vorliegt, oder welche Bedingungen gegeben sind (deine Radiobuttons).

Die Formeln arbeiten zudem schnell, so dass man sie synchron aufrufen kann und nicht mit Obserservables, Subjekten und anderen RxJS-Dingen zu spicken braucht.

Dein eigentliches Problem scheint mir nur zu sein, den Ablauf für die Benutzeraktivitäten in Code zu formulieren.

Wie gefragt, wird dadurch das Programm einfacher zu warten oder nicht?

Depends. Wenn das Ziel ist, die Formeln testbar zu haben, dann sollten sie in einem Service untergebracht sein. Auch dann, wenn sie von mehreren Programmteilen benötigt werden. Wenn Testbarkeit nicht das Ziel ist, und sie auch nur innerhalb eines Controllers verwendet werden, kann man sie auch in private Methods unterbringen. Das macht zwar den Controller komplexer, nimmt aber etwas Komplexität aus dem Gesamtprogramm, weil man sich den Service spart. Allerdings kann das auch wieder zu Unübersichtlichkeit führen, wenn für ähnliche Fälle mal ein Service verwendet wird und mal nicht.

dedlfix.