簡體   English   中英

如何將類注入服務 [Angular 6]

[英]How to inject class into Service [Angular 6]

我們可以將一個類(不是服務)作為共享實用程序,它可以通過角度依賴注入注入到服務甚至組件中嗎?

我的實用類

export class MyUtilClass{

  do(){
     // something
  }
}

我的服務

export class MyService{
  constructor(private uitl:MyUtilClass){
    util.do();
  }
}

服務是有一點附加差異的類(不是結構上的),它們有一個裝飾器 @Injectable() 不是更多! 您可以通過運行 angular CLI 來提供服務

ng generate service service-name

它將被注入到您的其他班級中。享受吧!

angular 中的服務只是一個類,因此您可以將任何類注入到任何類中

公用事業

import { Injectable } from '@angular/core';

@Injectable({providedIn:'root'})
export class Utility {
  constructor(){
    console.log('Utility is created');
  }
}

我的服務

import { Injectable } from '@angular/core';
import {Utility} from './utility'

@Injectable({providedIn:'root'})
export class MyServiceService {

  constructor(private uitl:Utility) { }

}

{providedIn:'root'}在 angular 6 的一個特性中,另一種方法是將 MyServiceService , Utility 添加到app.module.ts中的 providers 數組,在這種情況下,您可以刪除 Utility 類中的 @Injectable 裝飾器

演示 - 檢查控制台

您可以使用您的 utils 創建文件,例如 util.ts 並直接包含導出功能,例如

export function do() {
  //do something
}

接下來,它可能會被導入並使用到您的服務中。 另一方面,您可以創建 MyUtilService 而不是類,並將其提供到您的 MyService 中,這是 Angular 推薦的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM