gpt4 book ai didi

javascript - 在 es5 中创建一个 angular 2 服务

转载 作者:太空狗 更新时间:2023-10-29 18:21:40 25 4
gpt4 key购买 nike

我试图在 Angular 2 中创建一个自定义服务,但我似乎无法在 es5 中找到任何关于 Angular 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={}));

然而,当我将它注入(inject)我的组件时,它会抛出错误 no provider for class0 (class10 -> class0) 我似乎无法弄清楚如何创建自定义服务。有谁知道如何在 es5 中执行此操作?

最佳答案

这是一个完整的 ES5 依赖注入(inject)示例。 (服务到组件,服务到服务)。不要忘记在引导您的应用程序时或在组件的 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
]);
});

你也可以看看这个问题:

关于javascript - 在 es5 中创建一个 angular 2 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com