为什么我们要在构造函数中注入(inject)服务作为这样的参数?
import { HeroService } from '../hero.service';
constructor(private heroService: HeroService) { }
我们为什么不在构造函数中注入(inject),而不是作为参数传递:
import { HeroService } from '../hero.service';
constructor() {
this.heroService=HeroService;
}
是否可以按照上述方式进行?
最佳答案
因为,您可以在官方文档中找到,The parameter simultaneously defines a private heroService property and identifies it as a HeroService injection site.
constructor(private heroService: HeroService) { }
注:
如果我们不遵守会发生什么:
如果您不想使用依赖注入(inject),则应该每次都创建具有所需依赖项的新服务实例,这是我们不想要的。
此外,我们需要为该服务声明一个新变量
例如:
export class HeroListComponent {
heroes: Hero[];
heroService;
constructor()
{
this.heroService = new HeroService('', '');
this.heroes = this.heroService.getHeroes();
}
}
Here is a reference for the same
关于Angular Service 为什么我们要在构造函数上注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49755707/