I'm learning angular framework and I was wondering in this scenario which would be better to use. Child component gets 3 inputs ( name, date, age) but has no click event ( From what I gather you can still emit without such a event in said component) and needs to pass data to a parent component which will generate some sort of profile. The parent component does have a submit button which I assume I could use with the child component but unsure if that's a code smell. Would a shared service be more suitable?
I've had a look at some examples of child to parent data transmission using event emitters but most seem to have a button in the child component.
So it depends on your code, project, and what you like :-). A
Subject/Observablein a service is a betterEventEmitterso to say. And I say it in short, so don't think aEventEmitteris bad or wrong, it isnt't.So if your component communicate directly with his parent, a
EventEmittercan be enough and do its job. It's very reusable and a good practice. If you component is used in many parent components and all need to react to any event, of the event goes up over more components (child -> parent -> parent2) then you can use aserviceinstead aEventEmitter.In most cases a EventEmitter is used by a very reusable component that not know about its parent as example. A service is used by centralized things, or our component know that it must to communicate with other reusable components eventually. So a service is the better approach.