Hej, natknąłem na lekki problem w moim kodzie, mam metodę która odpowiada za pare zmian w widoku, jakieś proste flagi typu isFormLoading = true, poza tym metoda ma w sobie metodę post a w tapie zmiana flagi isFormLoading na false, problem jest taki, że ta metoda będzie powtarzana w 10 komponentach ale jest możliwość, że np. w 3 z nich zachowanie ulegnie małym zmianom i będzie trzeba dopisać parę linijek kodu. Pytanie teraz brzmi tak: Czy warto to wynosić do jakiegoś serwisu i czy w ogóle powinienem to w taki sposób ogrywać bo w metodzie jest jednak api call, jak byście do tego podeszli, zostawiać? ;)
No wiadomo że powinieneś to wynieść. Calle do API i tak nie powinny być bezpośrednio w komponencie.
a co te isFormLoading robi? Jeśli pokazuje jakiś spinner na czas ładowania to może warto to opakować w komponent który będzie się tym zajmował, renderował właściwą treść jako ngContent i wyświetlał tę treść zastępczą w czasie ładowania (ew. wyłączał formularz)
Mateuszto napisał(a):
Hej, natknąłem na lekki problem w moim kodzie, mam metodę która odpowiada za pare zmian w widoku, jakieś proste flagi typu isFormLoading = true, poza tym metoda ma w sobie metodę post a w tapie zmiana flagi isFormLoading na false,
Czemu tak imperatywnie? Myślałem, że w Angularze się korzysta z obserwabli z Rx.js, które emitują kolejne wartości w czasie, a nie lata z flagami i zmienia widoki na żywca. Jak zwierzęta xD
Nie zawsze warto używać observabli do prostego ngifa, dodatkowy kod, nextowanie wartośći i jeszcze zwrócenie jako observable np, subjecta ;) Szkoda zachodu. Ogólnie temat ogarnięty i przez specyfike projektu nie da rady tego w fajny sposób wydzielić, w sensie dałoby ale za dużym effortem więc zostawiam
@LukeJL: Poza tym czekam za angularem 16, wtedy może fajnie takie rozwiązania w komponencie będzie można ograć signalsami, teraz najlepsze rozwiązanie to prosta flaga + detectChanges ewentualne jeśli potrzeba. Jeśli miałbym komunikacje między komponentami to spoko użyłbym jakiegoś subjecta i po sprawie + Jak zwierzęta? To daj inny pomysł który będzie lepszy
małym zmianą
=> "małym zmianom" - proszę, na litość boską nauczcie się odmieniać słowa przez przypadki, już nawet ortografy czy brak interpunkcji są lepsze niż ta abominacja.
To daj inny pomysł który będzie lepszy
-> React / Vue, wydzielasz funkcjonalność do osobnego pliku w postaci hooka i możesz sobie robić z tym co chcesz.
Przeczytaj najpierw co napisalem, problem z reużyciem tego jest taki, że są tam calle do api, masz tak dobre DI w vue czy reakcie? Niexd proszę cię
Takim refaktoringiem (gdzie powtarza ci się praktycznie 1 linijka i każde zachowanie może wyglądać inaczej) narobisz sobie więcej problemów niż przyniesie to pożytku.
Zazwyczaj jeśli masz wątpliwości czy coś wymaga refaktoringu to prawdopodobnie ten refaktoring wcale nie jest wymagany.
Tak, właśnie pisałem wyżej, że szkoda czasu w ogóle na próbę rozwiązania czegoś takiego, może trochę kuje w oczy ale co poradzić, specyfika projektu też nie pomaga