面试题答案
一键面试依赖注入管理服务间依赖关系
- 定义服务:
- 使用
@Injectable()
装饰器来定义一个可注入的服务。例如,假设我们有一个LoggerService
,用于记录日志。
import { Injectable } from '@angular/core'; @Injectable() export class LoggerService { log(message: string) { console.log(`[LOG] ${message}`); } }
- 使用
- 在其他服务中注入依赖:
- 假设我们有另一个
UserService
,它依赖于LoggerService
。在UserService
的构造函数中注入LoggerService
。
import { Injectable } from '@angular/core'; import { LoggerService } from './logger.service'; @Injectable() export class UserService { constructor(private logger: LoggerService) {} getUser() { this.logger.log('Fetching user data'); // 实际获取用户数据的逻辑 return { name: 'John Doe' }; } }
- 假设我们有另一个
- 模块中提供服务:
- 为了能让依赖注入正常工作,需要在相关模块中提供服务。可以在
@NgModule
的providers
数组中提供服务。
import { NgModule } from '@angular/core'; import { LoggerService } from './logger.service'; import { UserService } from './user.service'; @NgModule({ providers: [LoggerService, UserService] }) export class AppModule {}
- 为了能让依赖注入正常工作,需要在相关模块中提供服务。可以在
在组件中注入自定义服务示例
- 组件中注入服务:
- 假设我们有一个
AppComponent
,需要注入UserService
。
import { Component } from '@angular/core'; import { UserService } from './user.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { user; constructor(private userService: UserService) {} ngOnInit() { this.user = this.userService.getUser(); } }
- 假设我们有一个
- 模板显示数据:
- 在
app.component.html
中可以显示从UserService
获取的数据。
<div> <h1>User Information</h1> <p>Name: {{ user.name }}</p> </div>
- 在