我试图理解在角2中的服务中添加@Injectable()装饰的必要性。
来自文档:https://angular.io/docs/ts/latest/guide/dependency-injection.html
为什么我们不将@Injectable()添加到HeroesComponent中呢?如果我们真的想要的话可以加进去。没有必要,因为HeroesComponent已经用@Component来修饰了。TypeScript为任何有装饰器的类生成元数据,任何装饰器都可以。
因此,基本上您只需要在没有其他装饰可用的情况下添加@Injectable(),因为如果有任何可用类型的装饰,类型记录编译器将根据在构造函数(例如.:constructor(private logger: Logger) )中传递的变量自动生成依赖信息。
是这样的吗?谢谢
发布于 2016-01-05 13:14:04
我认为这个名字有点模糊,我真的不明白为什么他们会告诉你添加它作为最佳实践。如果把它添加到每个类中是最好的实践,那么我完全不明白为什么需要它。如果构造函数需要注入或不注入内容,让框架检查每个类会更容易。可以通过类型记录上的命令行属性来解决这个问题,以便始终生成(模拟)元数据。
建议总是添加元数据,我想这类似于让编译器总是添加元数据(据我所知,这是不可能的)。您也可以(保持警惕)只(而且总是)将其添加到需要注入的类中--即使它们有另一个装饰师。这可能是最明确的解决方案--但是,马马虎虎既是一件坏事,也是一件好事。你将是这个案子的法官。
TL;DR --如果您没有其他装饰器--和--如果您的构造函数需要服务/etc注入,那么就需要它。
https://stackoverflow.com/questions/34602005
复制相似问题