Javascript 角度2和角度2模块喷油器

Javascript 角度2和角度2模块喷油器,javascript,angular,Javascript,Angular,NGmodule提供了一种在模块中组织代码的方法 它还建议提供一些服务作为模块的属性,我不理解它的工作方式 首先,这是否意味着如果我在NGmodule的provides属性中添加服务,它将公开该服务(意味着我必须在另一个模块中调用该模块才能使用其服务) 那么,是否存在NGO模块喷油器液位 如何在另一个模块中使用模块盒外的服务?在模块中提供服务意味着该服务将被实例化,并可用于模块中的所有组件、指令和管道。“实例化”一词在这里很关键——因为服务是单例的,所以模块必须跟踪使用它们的每个组件、指令或管道

NGmodule提供了一种在模块中组织代码的方法

它还建议提供一些服务作为模块的属性,我不理解它的工作方式

首先,这是否意味着如果我在NGmodule的provides属性中添加服务,它将公开该服务(意味着我必须在另一个模块中调用该模块才能使用其服务)

那么,是否存在NGO模块喷油器液位


如何在另一个模块中使用模块盒外的服务?

在模块中提供服务意味着该服务将被实例化,并可用于模块中的所有组件、指令和管道。“实例化”一词在这里很关键——因为服务是单例的,所以模块必须跟踪使用它们的每个组件、指令或管道的服务。您也可以在单个组件中提供服务,但这将在每个组件中实例化服务,有效地否定了我们首先使用单例服务的原因。在模块级提供它为我们解决了这个问题

如果你想让你的服务在你的模块之外可用,那么你不必做任何事情。在项目中导入的模块中提供服务意味着它已经在项目中的任何位置可用

相关的:

如果要使组件、指令或管道在模块外部可用,则必须导出它们(并在要使用它们的模块中导入它们)。您可以通过在模块中使用export关键字来实现这一点

相关的:

例如,您可以使用NgIf指令,因为它是从CommonModule()导出的,然后我们将其导入到我们自己的模块中:

@NgModule({
  declarations: [COMMON_DIRECTIVES, COMMON_PIPES],
  exports: [COMMON_DIRECTIVES, COMMON_PIPES],
  providers: [
    {provide: NgLocalization, useClass: NgLocaleLocalization},
  ],
})
有趣的事实:如果您只有一个模块(引导的根模块),那么实际上您将只使用BrowserModule而不是CommonModule。CommonModule的所有功能都在BrowserModule中的原因是BrowserModule只导入并重新导出整个CommonModule

如果你想了解更多信息,angular2的网站上有一个非常深入的指南。我之前链接的FAQ页面也非常有用