Angular2:*ngIf的一次绑定是否可用?

Abh*_*bhi 8 angular2-directives angular

我正在创建一个DOM结构,并且只想在第一时间在某些可视组件中添加一些部分,并且不希望它们一次又一次地刷新,这就是*ngIf的工作方式.这是为了避免绑定一次又一次地执行我知道一旦创建就永远不会改变的事情.换句话说,Angular1具有::帮助实现此目的的运算符.

*ngIfAngular2中是否有一次性绑定?如果在其他问题中讨论过,请指出我的问题.

Ste*_*ota 1

您可以创建自己的结构指令,它将在初始页面加载时评估传递的表达式,并根据传递条件的值在 DOM 中显示或不显示模板,如下所示:

import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';

@Directive({ selector: '[customNgIf]' })
export class CustomNgIfDirective {

    @Input("customNgIf") condition: boolean;

    constructor(
        private templateRef: TemplateRef<any>,
        private viewContainer: ViewContainerRef) {
    }

    ngOnInit() {
        if (condition) {
            this.viewContainer.createEmbeddedView(this.templateRef);
        } else {
            this.viewContainer.clear();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

<div *customNgIf="expression">
    Test
</div>
Run Code Online (Sandbox Code Playgroud)