我们希望在两个项目中重用一些代码,一个用knockout实现,另一个用angular2实现。有没有可能,你可以去掉angular2中的可注射属性?
我找不到任何信息。

最佳答案

当构造函数具有依赖项(参数)时,DOCS称@Injectable()是必需的。
https://angular.io/docs/ts/latest/api/core/InjectableMetadata-class.html
当试图实例化一个没有@可注入标记的类时,注入器将抛出NoAnnotationError,如下面的示例所示。
一个解决办法是将所有依赖的供应商注册为工厂,那么您不需要@Injectable()

bootstrap(AppComponent, [OtherProviders, SomeDep,
    provide(MyClass, { useFactory: (dep1) => { return MyClass(dep1); },
                  deps: [SomeDep] })

另请参见https://angular.io/docs/ts/latest/api/core/Provider-class.html(搜索useFactory

关于typescript - 摆脱angular2中的Injectable属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35990456/

10-10 03:57