Your question is actually not specific to Angular. There's always some tension between easy data sharing/state management and a truly modular codebase (built with independent components).
Bit makes it easy to identify if a component is in fact independent but choosing the right design patterns and architectural styles is a matter of choice.