依赖注入:Angular 2 不工作
Dependency injection: Angular 2 not working
我正在学习 angular.io 中的教程显示数据。
我引入了一个新的 class FriendsService 来分离控制器逻辑和模型关注点。我使用依赖注入在 DisplayComponent class 中调用了 FriendsService class,依赖注入不起作用。
控制台没有错误。该页面不显示该组件。这是导致组件不显示在页面上的行。
constructor(friendsService: FriendsService)
如果将构造函数更改为:
,页面将加载并显示组件(display)
constructor()
我正在使用 angular2.alpha.34、Typescript、ES6。
我解决了。 Eclipse-Plugin 导致了这个问题。该插件未生成符合 ES5 要求的正确代码。
我使用了 "tsc --watch -m commonjs -t es5 --emitDecoratorMetadata app.ts" 网站中描述的 "tsc --watch -m commonjs -t es5 --emitDecoratorMetadata app.ts" 命令。
eclipse-plugin 生成的代码和命令 "tsc" 生成的代码略有不同。
当使用 "tsc" 命令时,我实现了预期的行为。
首先,您必须在任何组件或指令之前定义服务。
如果你有这样的东西
class Component {
constructor(svc: Service) {
}
}
class Service {
}
它会失败。在这种情况下,您应该使用 fordwardRef 或者您可以在组件之前声明它。
class Service {
}
class Component {
constructor(svc: Service) {
}
}
另一件事是您必须使用 viewBindings 注入您的服务(请参阅 ComponentAnnotation 文档)。
class Service {
}
@Component({
viewBindings: [Service]
})
class Component {
constructor(svc: Service) {
}
}
你可以开始了。希望对你有帮助。
我正在学习 angular.io 中的教程显示数据。
我引入了一个新的 class FriendsService 来分离控制器逻辑和模型关注点。我使用依赖注入在 DisplayComponent class 中调用了 FriendsService class,依赖注入不起作用。
控制台没有错误。该页面不显示该组件。这是导致组件不显示在页面上的行。
constructor(friendsService: FriendsService)
如果将构造函数更改为:
,页面将加载并显示组件(display)constructor()
我正在使用 angular2.alpha.34、Typescript、ES6。
我解决了。 Eclipse-Plugin 导致了这个问题。该插件未生成符合 ES5 要求的正确代码。
我使用了 "tsc --watch -m commonjs -t es5 --emitDecoratorMetadata app.ts" 网站中描述的 "tsc --watch -m commonjs -t es5 --emitDecoratorMetadata app.ts" 命令。
eclipse-plugin 生成的代码和命令 "tsc" 生成的代码略有不同。
当使用 "tsc" 命令时,我实现了预期的行为。
首先,您必须在任何组件或指令之前定义服务。
如果你有这样的东西
class Component {
constructor(svc: Service) {
}
}
class Service {
}
它会失败。在这种情况下,您应该使用 fordwardRef 或者您可以在组件之前声明它。
class Service {
}
class Component {
constructor(svc: Service) {
}
}
另一件事是您必须使用 viewBindings 注入您的服务(请参阅 ComponentAnnotation 文档)。
class Service {
}
@Component({
viewBindings: [Service]
})
class Component {
constructor(svc: Service) {
}
}
你可以开始了。希望对你有帮助。