我试图在角度2中创建一个自定义服务,但我似乎无法在es5中找到有关角度2服务的任何文档(这是我编写的代码)我尝试过使用此
(function(app){
app.database=ng.core.Injectable().Class({
constructor:[function(){
this.value="hello world";
}],
get:function(){return this.value},
});
ng.core.Injector.resolveAndCreate([app.database]);
ng.core.provide(app.database,{useClass:app.database});
})(window.app||(window.app={}));
然而,当我将它注入我的组件时,它会抛出错误no provider for class0 (class10 -> class0)
我似乎无法弄清楚如何创建自定义服务。有没有人知道如何在es5中这样做?
答案 0 :(得分:4)
以下是使用ES5进行依赖注入的完整示例。 (服务到组件,服务到服务)。在引导应用程序或组件的providers
属性时,不要忘记指定服务。
var OtherService = function() {};
OtherService.prototype.test = function() {
return 'hello';
};
var Service = ng.core.Injectable().Class({
constructor: [ OtherService, function (service) {
this.service = service;
}],
test: function() {
return this.service.test();
}
});
var AppComponent = ng.core
.Component({
selector: 'my-app',
template: '<div>Test: {{message}}</div>',
})
.Class({
constructor: [Service, function (service) {
this.message = service.test();
}],
});
document.addEventListener('DOMContentLoaded', function () {
ng.platform.browser.bootstrap(AppComponent, [
OtherService, Service
]);
});
在您的情况下,我认为您忘记在提供商中添加app.database
。类似的东西:
document.addEventListener('DOMContentLoaded', function () {
ng.platform.browser.bootstrap(AppComponent, [
app.database
]);
});
你也可以看看这个问题: