angular – 组件提供商和模块提供商的区别
发布时间:2020-12-17 07:18:36 所属栏目:安全 来源:网络整理
导读:@Components providers属性和@Module提供者之间的区别是什么? 两者都代表什么? 编辑 我有两个组件:LoginComponent和SigninComponent.另一方面,我正在使用自定义库中的UserService.这个UserService服务正在寻找一个opaquetoken BASE_PATH: @Injectable()e
@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的例子. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |