Search code examples
angulardependency-injectionangular16angular-injector

Angular use injection outside constructor, directly in class attribute


My student is asking me : << why should I inject stuff inside the constructor instead of injecting directly in the attribute of the class ?

What I teach to her : Use injection inside the constructor

housingLocationList: HousingLocation[] = [];
housingService: HousingService = inject(HousingService);

constructor() {
  this.housingLocationList = this.housingService.getAllHousingLocations();
}

What She wants to do : Inject the housing service directly inside the class attribute

@Component({
//...
})
export class HomeComponent {

  housingService: HousingService = inject(HousingService);
  housingLocationList: HousingLocation[] = this.housingService.getAllHousingLocations();
 
  constructor() {}
}

What should I answer to her ?

What I tried : I tried to convice her that it's a dogma and she should not think about it and just do it like that :)

What I expected : She accept my answer

What actually resulted: She still wants to know


Solution

  • From https://angular.io/guide/dependency-injection#injecting-a-dependency you can see that there is no difference and you should not convice her that is a dogma (it isn't)

    I think that DI in constructor is a better way to take trace of dependency of a component in one single place