Estoy creando una estructura DOM y solo quiero agregar algunas partes en algunos componentes visuales por primera vez y no quiero que se actualicen una y otra vez, que es la forma en que funcionaría * ngIf. Esto es para evitar que los enlaces se ejecuten una y otra vez para cosas que sé que nunca cambiarán una vez creadas. En otras palabras, Angular1 tiene un operador :: que ayuda a lograr esto.
¿Hay un enlace único para *ngIf disponible en Angular2? Indíqueme la pregunta, si esto se discute en alguna otra pregunta.
Puede crear su propia directiva estructural que evaluará la expresión pasada en la carga de la página inicial y mostrará o no mostrará la plantilla en DOM según el valor de la condición pasada, algo como esto:
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(); } } }Lo usarías así:
<div *customNgIf="expression"> Test </div>