【发布时间】:2017-03-18 08:27:25
【问题描述】:
为了更深入地了解 Angular 2,我希望有人能就组件、指令及其容器和视图的底层结构创建一个深入的解释/教程。
根据文档:
组件的容器可以包含两种视图。主机视图, 通过 createComponent 实例化组件创建,并嵌入 视图,通过实例化嵌入式模板创建 创建嵌入式视图。 View Container 在视图中的位置 包含 View 由 Anchor 元素指定。每个视图 容器只能有一个锚元素,每个锚元素可以 只有一个视图容器。附加到的视图的根元素 这个容器成为渲染中的锚元素的兄弟姐妹 查看。
这留下了许多悬而未决的问题,例如:
Host View是指组件所在的元素,而Embedded view是指组件的模板本身?
在手动创建(通过createComponent)以及通过在另一个托管组件(父级)中以声明方式创建时,这两种情况都成立吗?
对于没有模板(因此没有视图)的指令也是如此吗?以及这一切在 Shadow dom 环境(浏览器实际上支持组件主机)与模拟环境中是如何工作的?
Angular2 确实做了很多神奇的事情,为了成为专家,我希望更好地理解(可能通过可视化图表):ViewContainerRef、Host 视图的整个关系、模板、嵌入式模板、ViewChild、ViewContainer及其组件和指令的层次结构。
我认为自己非常精通 Angular2(已经交付了 2 个大型项目),但我仍然觉得我对内部工作原理的理解存在漏洞。
当然,你不需要知道一辆车是如何工作的,但如果你知道,你会更好地驾驭它,
一如既往的感谢,
肖恩
【问题讨论】:
-
我看到越来越多的人感到困惑并要求深度教程:github.com/angular/angular/issues/9035
-
my answer有什么不清楚的地方吗?
标签: angular