如何在视图组件中注入服务?

时间:2019-10-10 19:57:02

标签: angular typescript

我有一个布局组件,需要在其中注入服务。但服务未定义。这是我的代码:

import {BaseLayout, LogEvent, Layout} from "ts-log-debug";
import {formatLogData} from "@tsed/common/node_modules/ts-log-debug/lib/layouts/utils/inspectUtils.js";
import { StorageService } from './StorageService';
import { IBasicLayoutConfiguration } from "@tsed/common/node_modules/ts-log-debug/lib/layouts/interfaces/BasicLayoutConfiguration";


@Layout({name: "customJson"})
export class JsonLayout extends BaseLayout {

  constructor(config : IBasicLayoutConfiguration , private storageService : StorageService) { 
    super(config);
  }

  transform(loggingEvent: LogEvent, timezoneOffset?): string {
      const log = {

           Id:{ Id: () => {
                       return this.storageService && this.storageService.getId() || '';
                  },
                },

          context: context
      };
      log.data = log.data.map((data) => formatLogData([data]));
      return JSON.stringify(log) + (this.config["separator"] || "");
  };

}

我在app.module.ts文件的providers数组中拥有该服务。我究竟做错了什么 ?

1 个答案:

答案 0 :(得分:0)

如果您有一项服务,则需要将其注入角度组件:

1)创建一个使用@Injectable()注释的服务,如下所示

@Injectable()
export class StudyService

2)您必须像在使用StorageService一样将其注入组件构造函数中:

 constructor(private studyService: StudyService){}