加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何将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 };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读