2016-08-04 96 views
0

如果删除ngIf属性后,如果删除ngIf属性为true,是否有方法?将ngIf属性评估为true后移除ngIf属性

例子,可以说,我有一个模板

<div class="container"> 
    <div *ngFor="let el of elements"> 
     <div *ngIf="el.index = index"> 
     ... 
     </div> 
    </div> 
</div> 

,并在部分我已经反

class Test implements onInit{ 
    index = 0; 

    ngOnInit(){ 
    setInterval(() => index++) 
    } 
} 

这将意味着,只有一个在时间格会显示出来,但是我想所有div之前显示的内容保持显示,换言之,删除ngIf属性后,将其评估为true。

是这样的可能吗?

谢谢

回答

1

这是不可能的。您应该维护组件中的元素列表以包含*ngFor应呈现的内容。

+0

是否ATLEAST可能评估功能时ngIf解析为真? – Darlyn

+0

您可以使用像http://stackoverflow.com/questions/36427670/angular2-calling-custom-function-after-ngswitch-new-view-is-created/36427769#36427769这样的指令,但是您的要求看起来更像是针对Angular2而不是它(除非你正在使用jQuery小部件) –

+0

我通过传递函数来解决它,如果isViewed属性为true,则自动返回true。如果没有,则检查条件,如果条件为真,则将其设置为真 – Darlyn

0

您可以创建自己的ngIf:

@Directive({ selector : '[myNgIf]' }) 
export class myNgIfDirective { 
    private condition; 

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

    @Input() set myNgIf (condition : boolean) { 
     if (this.condition !== true) { 
     // if this condition is once set to true , don't bother doing anything anymore 
      this.condition = condition; 
      if (condition) { 
       this.viewContainer.createEmbeddedView(this.templateRef); 
      } else { 
       this.viewContainer.clear(); 
      } 
     } 
    } 
} 

您可以使用它:

<div *myNgIf ="isTrue">stuff</div>