Angular 中的提供商

为了让角度2+中的服务正确地injected,],它需要被提供给组件、父模块或应用程序模块。应用程序模块中提供的服务将在任何地方提供相同的实例。下面是一个组件中提供的两个服务的示例:

组件:app.Component.ts

 1import { Component } from '@angular/core';
 2import { WeatherApiService } from './weather-api.service';
 3import { AuthService } from './auth.service';
 4
 5@Component({
 6  ...,
 7  providers: [WeatherApiService, AuthService]
 8})
 9export class AppComponent {
10  constructor(public weatherApi: WeatherApiService,
11              public auth: AuthService) {}

这里,它们是在模块中提供的:

模块:app.mode.ts

1...
2
3import { WeatherApiService } from './weather-api.service';
4import { AuthService } from './auth.service';

类提供者

默认情况下,ANGLE将注入具有相同类名和令牌的提供程序,但useClass允许使用不同的类。例如,以下代码将提供具有AUTH令牌但UserAuth类的服务:

1providers: [{ provide: Auth, useClass: UserAuth }]

别名提供程序

如果您希望为旧提供程序设置别名,以便由新提供程序处理,则可以使用useExisting来实现。例如,如果组件仍需要使用旧提供程序,但逻辑仍应由新提供程序处理时,这将非常有用:

1providers: [{ provide: OldService, useExisting: NewService }]

价值提供者

大多数情况下,类用作提供程序,但也可以将简单值与useValue一起使用:

1const AUTH_CONFIG = {
2  apiKey: "...",
3  authDomain: "..."
4};
Published At
Categories with 技术
Tagged with
comments powered by Disqus