Reputation: 163
Can we make a class(not service) as shared utility which can be injected into services or even components through angular dependency injection?
MyUtilClass
export class MyUtilClass{
do(){
// something
}
}
MyService
export class MyService{
constructor(private uitl:MyUtilClass){
util.do();
}
}
Upvotes: 6
Views: 2444
Reputation: 295
Services are classes with a bit addition difference(not structurally), they has a decorator @Injectable() not more! And you can make service through angular CLI by running
ng generate service service-name
it will be injected in your other class.enjoy!
Upvotes: 4
Reputation: 24406
Service in angular is just a class so you can inject any class to any class
Utility
import { Injectable } from '@angular/core';
@Injectable({providedIn:'root'})
export class Utility {
constructor(){
console.log('Utility is created');
}
}
MyServiceService
import { Injectable } from '@angular/core';
import {Utility} from './utility'
@Injectable({providedIn:'root'})
export class MyServiceService {
constructor(private uitl:Utility) { }
}
{providedIn:'root'}
in a feature in angular 6 another way is to add MyServiceService , Utility to providers array in app.module.ts in that case you can remove @Injectable decorator in Utility class
Upvotes: 3
Reputation: 49
You can create file e.g. util.ts with your utils and export functions included directly e.g.
export function do() {
//do something
}
next it may be imported and used into your service. In the other hand instead of class you can create MyUtilService and provide it into your MyService what is Angular recommended way.
Upvotes: -1