Q1. How do you manually create a service without CLI?
Create a TypeScript class with @Injectable decorator. Example:
import { Injectable } from ''@angular/core'';
@Injectable({
providedIn: ''root''
})
export class LoggerService {
log(message: string) { console.log(message); }
}
Q2. What methods can a service contain?
Services can contain any business logic: HTTP requests (using HttpClient), data transformation, state management (using BehaviorSubject), utility functions, or logging. They typically provide methods that components can call. Services should be stateless unless designed for state sharing.
Q3. How do you use a service in a component?
Inject the service via constructor. Example:
export class UserComponent {
constructor(private logger: LoggerService) {}
loadData() {
this.logger.log(''Loading...'');
}
}
Angular''s DI provides the singleton instance.Q4. Can a service have dependencies?
Yes, services can depend on other services. Angular''s DI will inject them. Example:
@Injectable({ providedIn: ''root'' })
export class UserService {
constructor(private http: HttpClient) {}
}
Q5. How do you test a service?
Services can be tested in isolation using TestBed. Example:
let service: LoggerService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(LoggerService);
});
it(''should log'', () => { spyOn(console, ''log''); service.log(''test''); expect(console.log).toHaveBeenCalled(); });
