[Angular] Ile zależności w komponencie to już za dużo?

[Angular] Ile zależności w komponencie to już za dużo?
bakunet
  • Rejestracja:około 8 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Polska
  • Postów:1610
0

Hej, tak się zastanawiam, bo się uczę Angulara i ilość zależności w konstruktorze komponentu niepokojąco mi ciągle rośnie i ciekaw jestem czy to jest norma w Angularze czy już patologia? W C# już dawno bym się zaczął drapać po głowie i zastanawiał jak to rozprowadzić po serwisach, ale w Angularze wszystko się pakuje w konstruktor.

Sam komponent ma mniej niż 100 linii, więc chyba znośnie, ale konstruktor wygląda tak:

Kopiuj
  constructor(private router: Router, private formBuilder: FormBuilder, private http: HttpClient, private spinner: NgxSpinnerService, private modalService: ModalService, private recaptchaV3Service: ReCaptchaV3Service, private securityService: SecurityService) {
    this.createForm();
  }
edytowany 3x, ostatnio: bakunet
mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

Nic szczególnego, stosuj odpowiednie formatowanie to nie będzie to uciążliwe.


It's All About the Game.
edytowany 2x, ostatnio: mr_jaro
AI
Skąd przypuszczenie, że jest to angularjs? Mi to bardziej wygląda na Angular2+, zwłaszcza FormBuilder, HttpClient czy NgxSpinnerService itd.
mr_jaro
@Aisekai: ehhh piątek wieczór, masz całkowitą rację to nie jest angular.js już modyfikuję posta
AI
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:375
2

Imo - dałoby radę pozbyć się pewnie kilku zależności z komponentu. FormBuildera spokojnie można samemu tworzyć. HttpClienta wyniósłbym do osobnego serwisu/effectu odpowiedzianego za Http Requesty (nie zmniejszy to liczby pól w komponencie ale imo lepiej coś takiego w serwisie zostawić, zwłaszcza że z tego będzie można skorzystać w innych miejscach). Spinner - to zależy. Jeżeli z jakiegoś powodu musisz ręcznie obsługiwać show() i hide() możesz wynieść do Interceptora jakiegoś i tam sobie odpalać spinnera wtedy kiedy potrzeba (jeżeli masz jeden spinner na fullscreena to możesz tak zrobić, jeśli masz kilka i musisz odpalać je w ngAfterViewInit - raczej ciężko będzie). Możesz nawet jakiś counter do liczby oczekujących requestów zrobić, żeby nie odpalić hide() kiedy polecą requesty równolegle. ModalService może można byłoby też do effectów wynieść (ale w małych aplikacjach nie stosowałbym raczej ngrx/akity). Reszta raczej musi pozostać.

bakunet
Ciekawe podejścia sugerujesz. Dzięki!
FG
  • Rejestracja:około 5 lat
  • Ostatnio:12 dni
  • Postów:57
2

Ogólnie jeśli w komponencie dzieje się za dużo to czasem warto pomyśleć nad jakaś fasada żeby bylo przejrzyście. Często (oczywiście nie zawsze) duża liczba importów świadczy o tym ze komponent ma za duża odpowiedzialność

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.