当前位置 : 主页 > 网页制作 > Bootstarp >

Bootstrap与@component中的Angular2提供程序

来源:互联网 收集:自由互联 发布时间:2021-06-12
根据我的理解,您可以在引导程序调用中定义应用程序提供程序,如下所示: bootstrap( App, [disableDeprecatedForms(), provideForms()]]) 或者在你的根组件中,如下所示: @Component({ selector: 'my-app', pro
根据我的理解,您可以在引导程序调用中定义应用程序提供程序,如下所示:

bootstrap(
  App,
  [disableDeprecatedForms(), provideForms()]]
)

或者在你的根组件中,如下所示:

@Component({
  selector: 'my-app',
  providers: [disableDeprecatedForms(), provideForms()],
  ...
)

但是,我创建了一个表单验证器插件,该插件需要provideForms提供程序,并且此指令仅在引导选项时有效.我创建了一个plunk to illstrate the problem:验证器工作,如果我将providerForms()添加到bootstrap调用.一旦我从引导程序调用中注释掉providerForms(),验证程序就不再起作用了.我假设组件中的providerForms定义已足够.任何解释?

Angular2 DI总是向上查找请求的依赖项的提供者.如果由引导程序实例化的服务需要一个依赖项,而不是一个注入的服务,它将在树中进一步提供.

在根组件的bootstrap(…)和@Component(…)处提供不等效,但这种区别与根组件或其子项或其他子项中的所有内容无关.
bootstrap()比根组件高一级.

Angular2样式指南还建议优先选择root组件而不是bootstrap(),因为bootstrap应该保留给系统内容.

表单和路由器需要在创建第一个组件之前进行实例化(例如,在V3路由器的早期版本中存在一个错误,其中根组件需要注入路由器或包含routerLink,否则路由器将无法启动) .

因此,在根组件创建之前需要实例化某些事情时,会出现bootstrap()和根组件之间的差异变得相关的情况.

网友评论