【问题标题】:When does Angular create component instancesAngular 什么时候创建组件实例
【发布时间】:2018-03-02 07:55:40
【问题描述】:

我是 Angular 的新手,从文档中我了解到我们可以通过引导 root 模块启动 Angular 应用程序,然后 Angular 可以通过创建 app component 的实例来启动应用程序并找到 selector这个组件的index.html 并把那个根组件的视图, 我的问题是角度是否对所有组件都使用相同的策略, 例如,这是否会同时创建所有组件或创建在模板上声明的基于组件的指令。

1) 我有 2 个组件,例如 app componentnavbar component 2) 应用组件有<app-navbar></app-navbar> on its template

据我了解 Angular 首先创建 root component 并将该组件视图粘贴到 index.html 上的 root component selector(app-root) 中,如果该根组件视图有另一个名为 app-navbar 的选择器,那么只有它创建 navbar.component 的实例并将该视图粘贴到 selector.correct如果我错了?

【问题讨论】:

    标签: angular angular2-template angular2-directives


    【解决方案1】:

    ... 并在 index.html 中找到该组件的选择器并将 该根组件的视图

    这只发生在模块装饰器中定义为bootstrap 组件的组件上。因此在这里:

    Angular 先创建根组件

    最好使用术语bootstrap 组件,因为可以有很多引导组件。

    我有 2 个组件,例如应用组件、导航栏组件

    Angular 编译器会生成两个工厂。在该过程中,它将遇到<app-navbar></app-navbar> 并创建适当的视图节点。当 Angular 将创建视图时,它将为 navbar component 创建一个视图并实例化 NavbarComponent 类。

    要了解更多关于 View 的信息,请从Here is why you will not find components inside Angular开始

    【讨论】:

    • 从您的回答中,除了bootstrap components 之外,只有在找到相应的selectors 时,angular 才会创建组件,从我的示例来看,angular 在找到<app-navbar> 之前不会创建实例navbar component。如果我错了,请纠正我
    【解决方案2】:

    更新

    Angular 只会实例化一个组件

    1. 遇到该组件的选择器
    2. 如果组件在entryComponent数组中提供
    3. 如果组件包含在路由定义中

    【讨论】:

      猜你喜欢
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 2010-11-08
      • 2011-05-31
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多