加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bootstrap与@component中的Angular2提供程序

发布时间:2020-12-17 21:26:24 所属栏目:安全 来源:网络整理
导读:根据我的理解,您可以在引导程序调用中定义应用程序提供程序,如下所示: bootstrap( App,[disableDeprecatedForms(),provideForms()]]) 或者在你的根组件中,如下所示: @Component({ selector: 'my-app',providers: [disableDeprecatedForms(),provideForms()
根据我的理解,您可以在引导程序调用中定义应用程序提供程序,如下所示:

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()和根组件之间的差异变得相关的情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读