I\'m trying to become better at Angular and I want to know the best practices between child-parent communication. My current app I want to work on is on Angular 6. I know I
In the situation you have shown, my preference would be to use @Output as you have done.
It's unlikely that a link being clicked is a wide concern, so I don't think a service makes sense.
@ViewChild could work, but it makes the component less reusable. If you wanted to reuse the child component inside a different parent, you'd have to copy code over.
Using @Output, if you wanted to use the child component in a different parent, no extra code needs to be copied over and you can bind to the @Output event very easily.