이상적인 경우를 따지면,
화면에 사용되는 프로퍼티나
데이터 바인딩에 사용하는 메소드만
정의하는 것이 좋으며,
템플릿이 렌더링된 뷰와
모델을 정의하는 애플리케이션 로직을
중개하는 역할만 하는 것이 좋습니다.
서버에서 데이터를 가져오는 로직이나
사용자의 입력을 검증하는 로직,
콘솔에 로그를 출력하는 로직은
컴포넌트에 구현하지 않고 서비스에게 맡기는 것이 좋습니다.
이런 기능을 의존성으로 주입할 수 있는 서비스 클래스에 정의하면,
여러 컴포넌트가 이 기능을 공통으로 사용할 수 있기 때문입니다.
환경에 따라 서비스 프로바이더를 다르게 지정하면
애플리케이션을 다양한 환경에서 동작하도록 좀 더 유연하게 만들 수 있습니다.
참고: Angular 공식 문서: https://angular.kr/guide/architecture-services