2017-06-13 28 views
0

我正在編寫一個服務,這個服務可能會呈指數級增長,我希望能夠編寫單獨的文件並將它們加載到組件使用的@Injectable中。通常我會寫多個服務,並將每個服務注入到組件中,但是我的組件已經相當重要,並且我覺得如果我可以只加載一個服務並處理此內部的所有功能一項服務。我希望我只是沒有正確的東西,這和導入一樣簡單。Angular 2/4注入功能的單獨文件

總體思路是沿着這些路線的東西:

-configfns1.ts

-configfns2.ts(包含多個TS功能我想可以作爲config.service)

-config.service .TS

import { Injectable } from '@angular/core' 
//{{Possibly import functions here}} 

@Injectable() 
export class ConfigService { 

    //{{Or possibly load within the class}} 

} 

-config-view.component.ts

import { Component, OnInit } from '@angular/core'; 
import { ConfigService } from '../services/config.service'; 

@Component({ 
    selector: 'app-config-view', 
    templateUrl: './config-view.component.html', 
    styleUrls: ['./config-view.component.scss'] 
}) 

export class ConfigViewComponent implements OnInit { 

    constructor(private configService: ConfigService){ } 

    ngOnInit() { 
      this.configService.configfn1(); //<---This would be a function loaded from configfns1.ts, and injected from config.service.ts 
     }) 

    onClick() { 
    this.configService.configfn2(); //Another fn loaded from configfns2.ts 
    } 

} 

此方法可行嗎?或者我只需要繼續爲每個服務創建單獨的服務,並將每個服務導入到我的組件中?

回答

1

更多谷歌搜索後,我發現這是一個簡單的打字稿導入答案。

-config.service.ts

import { Injectable } from '@angular/core' 
import * as configFns1 from './configfns1.ts' 
import * as configFns2 from './configfns2.ts' 

@Injectable() 
export class ConfigService { 

    fn1() { 
    configFns1.fn1(); 
    } 

    fn2() { 
    configFns2.fn2(); 
    } 
} 

FN1()和FN2()可以被稱爲正常。