Angular Dependency Injection and Child Components
Learn how Angular uses Dependency Injection (DI) to provide services to components and how to work with child components.
We'll cover the following...
Angular uses a technique known as Dependency Injection (DI) to provide services to components. This means that a class can request an instance of a service that it depends on, and Angular will resolve this dependency at runtime. DI in Angular works through the constructor function of a component:
export class UserDetailsComponent implements OnInit {loggedInUserName: string = 'logged_in_user';constructor(private broadcastService: BroadcastService) {}ngOnInit(): void {}@Output() notify = new EventEmitter();onLoginClicked() {console.log(`UserDetailsComponent : onLoginClicked()`);this.notify.emit('UserDetailsComponent : emit value');this.broadcastService.broadcast(EventKeys.LOGIN_BUTTON_CLICKED,'UserDetailsComponent: LOGIN_BUTTON_CLICKED');}}
Here, we have updated the UserDetailsComponent
class in two areas:
-
Firstly, we have added a private member variable through our constructor function named
broadcastService
, of typeBroadcastService
on lines 5. By adding this private member variable into the constructor and specifying its type, the Angular DI process will take over when creating this class and pass the instance of theBroadcastService
into this component as an argument. -
The second change we have made to this class is to call the broadcast function on our local instance of the
BroadcastService
on lines 16–19 and send anEventKeys.LOGIN_BUTTON_CLICKED
event to the event bus.
Note: We have included a string value ...