首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角2 @Injectable() -它是如何工作的

角2 @Injectable() -它是如何工作的
EN

Stack Overflow用户
提问于 2016-01-04 23:54:31
回答 1查看 1.9K关注 0票数 7

我试图理解在角2中的服务中添加@Injectable()装饰的必要性。

来自文档:https://angular.io/docs/ts/latest/guide/dependency-injection.html

为什么我们不将@Injectable()添加到HeroesComponent中呢?如果我们真的想要的话可以加进去。没有必要,因为HeroesComponent已经用@Component来修饰了。TypeScript为任何有装饰器的类生成元数据,任何装饰器都可以。

因此,基本上您只需要在没有其他装饰可用的情况下添加@Injectable(),因为如果有任何可用类型的装饰,类型记录编译器将根据在构造函数(例如.:constructor(private logger: Logger) )中传递的变量自动生成依赖信息。

是这样的吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-05 13:14:04

我认为这个名字有点模糊,我真的不明白为什么他们会告诉你添加它作为最佳实践。如果把它添加到每个类中是最好的实践,那么我完全不明白为什么需要它。如果构造函数需要注入或不注入内容,让框架检查每个类会更容易。可以通过类型记录上的命令行属性来解决这个问题,以便始终生成(模拟)元数据。

建议总是添加元数据,我想这类似于让编译器总是添加元数据(据我所知,这是不可能的)。您也可以(保持警惕)只(而且总是)将其添加到需要注入的类中--即使它们有另一个装饰师。这可能是最明确的解决方案--但是,马马虎虎既是一件坏事,也是一件好事。你将是这个案子的法官。

TL;DR --如果您没有其他装饰器----如果您的构造函数需要服务/etc注入,那么就需要它。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34602005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档