4
我正在创建一个DOM结构,并且只想在第一时间添加一些可视组件中的某些部分,并且不希望它们被一次又一次刷新,这是* ngIf的工作方式。这是为了避免绑定一次又一次地执行,因为我知道一旦创建就不会改变。换句话说,Angular1有::
运营商,这有助于实现这一点。Angular2:一次绑定* ngIf可用吗?
在Angular2中有没有一次性绑定*ngIf
?如果在其他问题中讨论这个问题,请指出我的问题。
我正在创建一个DOM结构,并且只想在第一时间添加一些可视组件中的某些部分,并且不希望它们被一次又一次刷新,这是* ngIf的工作方式。这是为了避免绑定一次又一次地执行,因为我知道一旦创建就不会改变。换句话说,Angular1有::
运营商,这有助于实现这一点。Angular2:一次绑定* ngIf可用吗?
在Angular2中有没有一次性绑定*ngIf
?如果在其他问题中讨论这个问题,请指出我的问题。
您可以创建自己的结构指令,它会评估通过表达对初始页面加载和显示或基于传递条件值在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();
}
}
}
你会使用它像这样:
<div *customNgIf="expression">
Test
</div>
如果该值没有改变,'* ngIf'不会刷新并再次刷新。不,没有一次性绑定Angular2 + –
感谢您的评论。这是我的不好,我的意思是优化绑定。 – Abhi
也许你绑定了一个方法或getter。这通常不是一个好主意。而是调用某个生命周期回调或事件处理程序的方法或getter,并将其分配给一个字段,然后绑定到该字段。变化检测对于字段比对方法更有效。 –