Angular ng-template元素的学习笔记

ng-template: As the name suggests the ng-template is a template element that Angular uses with structural directives (*ngIf, *ngFor, [ngSwitch] and custom directives).

模板元素,伴随着Angular结构化指令比如*ngIf, *ngFor和ngSwitch等一起使用。

Angular wraps the host element (to which the directive is applied) inside ng-template and consumes the ng-template in the finished DOM by replacing it with diagnostic comments.

结构化指令施加的元素称为host元素,host元素被ng-template包裹,当Angular渲染页面时,会消费ng-template, 并在最终生成的DOM元素中加上一些diagnostic comment.

例子:

这个id为emotyList的ng-template,出现在structual directive *ngIf里,

host元素p被ng-template包裹:

另一个例子:

最后生成的原生html页面:

注意,如果ng-template没有配合structural指令而是单独使用,则host元素最后不会渲染出来。看个例子:

最后渲染的原生html页面,里面什么也没有:


以下两种方法能够让go home通过ng-template被显示:

其中方法1使用了解糖之后的原始ngIf指令,此时Angular只会简单将ng-template替换成comment,而ng-template内的内容原封不动地出现在最后的HTML页面中。

In this method, you are providing Angular with the de-sugared format that needs no further processing. This time Angular would only convert ng-template to comments but leaves the content inside it untouched (they are no longer inside any ng-template as they were in the previous case). Thus, it will render the content correctly.

参考链接:Everything you need to know about ng-template, ng-content, ng-container, and *ngTemplateOutlet in Angular

更多Jerry的原创文章,尽在:"汪子熙":


你可能感兴趣的:(Angular ng-template元素的学习笔记)