
就从我们今天正在对照的ng-template开始。一个 Angular 页面里常见这样的设计,页面先声明一段暂时不渲染的界面结构,控制器或指令拿到TemplateRef后,再把这段结构交给ViewContainerRef,附带一个局部上下文,在指定位置创建一份嵌入视图。把同样的思路搬到 SAP UI5,最容易得到的直觉答案是 XML Fragment,但这个答案只对了一部分。更准确的结论是,SAP UI5 没有一个与@angular/core里的TemplateRef在类型、生命周期、上下文和实例化协议上完全对齐的公开 API。UI5 里承担相近职责的机制分散在 XML Fragment、聚合绑定模板、聚合工厂函数、XML 预处理与 SAP Fiori elements building block 之中。选择哪一种,不取决于名称像不像,而取决于我们究竟想复用一段界面定义、复制列表行、按数据动态选择控件结构,还是在元数据驱动阶段生成页面。Angular 官方把TemplateRef定义为可创建嵌入视图的模板表示,实例化通常通过ViewContainerRef.createEmbeddedView完成,ng-template本身声明的是一段可被程序化渲染的模板片段,而不是立即出现的 DOM 内容。(