如何将Angular @Injectable与函数(不是类)一起使用
发布时间:2020-12-17 17:10:22 所属栏目:安全 来源:网络整理
导读:我正在为Angular(2)应用程序创建服务,所有文档都使用类,但我更喜欢将服务编写为函数. 这是我想要的工作(但不是): import { Injectable } from '@angular/core';export const AframeMessengerService = Injectable()(function AframeMessengerService() { co
我正在为Angular(2)应用程序创建服务,所有文档都使用类,但我更喜欢将服务编写为函数.
这是我想要的工作(但不是): import { Injectable } from '@angular/core'; export const AframeMessengerService = Injectable()(function AframeMessengerService() { console.log('aframe messenger'); }); 有了这个,我在注入它的文件中得到这个错误: Cannot find name 'AframeMessengerService'. 这是什么工作,但不是我想要的: import { Injectable } from '@angular/core'; @Injectable() export class AframeMessengerService { constructor() { console.log('aframe messenger'); } } 解决方法
基本上你在这里做的一切都是正确的:
import { Injectable } from '@angular/core'; export const AframeMessengerService = Injectable()(function AframeMessengerService() { console.log('aframe messenger'); }); 现在您需要将其添加到模块提供程序: import { AframeMessengerService } from './a.service'; @NgModule({ ... providers: [AframeMessengerService],}) export class AppModule {} 并像这样注入: import { AframeMessengerService } from './a.service'; @Component({ selector: 'my-app',... }) export class AppComponent { constructor(@Inject(AframeMessengerService) s) { } 需要注意的一点是,当您将服务注入AframeMessengerService时,您需要传递参数索引: import { Inject,Injectable,Injector } from '@angular/core'; const AframeMessengerService = Injectable()(function AframeMessengerService(i) { console.log('aframe messenger'); }); Inject(Injector)(AframeMessengerService,null,0); ^^^^^^^ export { AframeMessengerService }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |