2017-04-26 64 views
1

我是Angular的新手,我试图了解它处理文件应用程序的顺序。 因此,根据我对订单的理解: 1- main.ts被处理,并且属于被导入的平台的引导方法接受根模块文件作为参数。 2- app.module.ts被处理,将导入应用程序所需的所有必需的包和应用程序文件。这里也是所有不同的组件和指令以及应用程序中没有声明用于应用程序的地方,以及应用程序根组件被引导的位置,从而导致从上到下渲染组件树模型。 3 - 这是我努力完全理解发生了什么的地方。Angular 2处理订单

因此,从呈现的根组件开始,Angular会沿着子组件的父子路径沿着子组件的树并按顺序渲染它们? 因此,比如说在AppComponent声明之后是BookItemComponent,后面是BookItemList组件,最后是一个名为FavoriteDirective的指令。 因此,AppComponent被启动并在应用程序标记的主体中呈现父定制DOM元素。 然后,嵌套在这里的是BookItemComponent,它创建了另一个名为的自定义DOM元素。在这个组件类中,我们有一个名为bookItem的输入选择器。 然后,嵌套在这里的是BookItemList组件,其中包含一个名为bookItems的书籍项目数组。 最后,FavoriteDirective只处理一些简单的主机绑定,为主机元素创建一个类。

所以我的问题简而言之 - 说BookItemComponent被呈现,但它的标记中有一些依赖于BookItemListComponents类或FavoriteDirectives类的代码的绑定。 Angular会跳过BookItem并查看这些文件吗?或者,Angular会暂停对BookItemComponent类的处理,向前跳过并寻找它无法解释的项目的数据匹配?或者,也许停止并迭代到下一个组件并按顺序向前移动,一旦找到它所需的数据,它就无法解释,然后返回以填补空白? 当我看到这种情况发生时,我发现很难遵循呈现的路径。也许我只是在错误地思考呢?

回答

1

不确定你的意思是“查找数据”。绑定显式地在哪里查找数据。如果一个字段的绑定是指没有数据还没有,那么它要么抛出,如果这使得表达式无效像{{person.name}}personnull(你可以解决使用{{person?.name}}以避免除外)。否则,Angular会在数据变为可用并且运行更改检测后“查找”数据。

+1

变化检测是我不理解。谢谢你给我正确的地方看! – Devoneous