Think about which component talks to services and manages data.
The smart component manages data and business logic, fetching or updating data and passing it to dumb components for display.
Consider how dumb components communicate with smart components.
Dumb components receive data through inputs and notify smart components of user actions via outputs, without managing state themselves.
Remember the correct syntax for decorators and property initialization.
Option D correctly uses @Input and @Output decorators with proper property initialization and typing.
Think about how Angular detects changes in inputs.
Angular's change detection checks for new object references. Mutating the array without changing its reference means the dumb component won't detect the change.
Consider what the pattern helps with and what it does not do automatically.
The pattern improves reusability, testing, and separation of concerns but does not automatically optimize performance or change detection.