angular – 组件提供商和模块提供商的区别

前端之家收集整理的这篇文章主要介绍了angular – 组件提供商和模块提供商的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@Components providers属性和@Module提供者之间的区别是什么?

两者都代表什么?

编辑

我有两个组件:LoginComponent和SigninComponent.另一方面,我正在使用自定义库中的UserService.这个UserService服务正在寻找一个opaquetoken BASE_PATH:

@Injectable()
export class UseRSService {
    constructor(@Optional()@Inject(BASE_PATH)

和BASE_PATH是:

export const BASE_PATH = new OpaqueToken('basePath');

这个opaqueToken在AppModule上设置:

@NgModule({
  bootstrap: [ App ],declarations: [
    App,ErrorComponent
  ],providers: [
    ENV_PROVIDERS,

其中ENV_PROVIDERS是根据environtment.ts上的环境设置设置的:

if ('production' === ENV) {
  enableProdMode();

  PROVIDERS = [
    ...PROVIDERS,// custom providers in production
    { provide: BASE_PATH,useValue: 'http://public.sample.com:8082/commty/cmng' }
  ];

} else {

  // Development
  PROVIDERS = [
    ...PROVIDERS,// custom providers in development
    { provide: BASE_PATH,useValue: 'http://localhost:8082/commty/cmng' }
  ];

}

export const ENV_PROVIDERS = [
  ...PROVIDERS
];

我正在设置所有:

@NgModule({
  declarations: [
    SigninComponent
  ],providers: [ UseRSService ]
})
export default class SigninModule {

@NgModule({
  declarations: [
    LoginComponent
  ],providers: [ UseRSService ]
})
export default class LoginModule {

因此,在组件上,我不会将任何服务作为提供者导入,我只声明它们.

然而,当我加载SigninModule时,我的所有网络请求都被发送到localhost.但是,当我加载LoginModule时,请求被发送到localhost:8282

如果您在组件内提供服务,它将是本地服务.
因此,如果您有两个组件实例,那么您将拥有两个服务实例.

现在,如果您在模块中提供服务,它将是全局的,它们将共享相同的服务实例.

告诉我,如果你不明白,我会提供一个关于plunker的例子.

原文链接:https://www.f2er.com/angularjs/141579.html

猜你在找的Angularjs相关文章