为什么我们在构造函数中注入服务作为这样的参数?
import { HeroService } from '../hero.service';
constructor(private heroService: HeroService) { }
Run Code Online (Sandbox Code Playgroud)
与其作为参数传递,不如我们在构造函数中注入:
import { HeroService } from '../hero.service';
constructor() {
this.heroService=HeroService;
}
Run Code Online (Sandbox Code Playgroud)
是否可以按照上述方式进行?
因为,你可以在官方文档中找到,
The parameter simultaneously defines a private heroService property and identifies it as a HeroService injection site.
constructor(private heroService: HeroService) { }
Run Code Online (Sandbox Code Playgroud)
笔记:
该组件不应使用 new 创建 HeroService。它应该要求注入 HeroService。
您可以通过指定具有依赖类型的构造函数参数来告诉 Angular 在组件的构造函数中注入依赖项。这是 HeroListComponent 构造函数,要求注入 HeroService。
如果我们不遵循会发生什么:
如果您不想使用依赖注入,您应该每次都创建具有所需依赖项的新服务实例,这是我们不想要的。
此外,我们需要为该服务声明一个新变量
例如:
export class HeroListComponent {
heroes: Hero[];
heroService;
constructor()
{
this.heroService = new HeroService('', '');
this.heroes = this.heroService.getHeroes();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4382 次 |
| 最近记录: |