Afroza Yasmin Afroza Yasmin - 5 months ago 464
AngularJS Question

Converting Angular 1 to Angular 2 ngInit function

In angular1, we call the function ng-init based on ng-if condition. The following code represents If first div match with date && time then it will check the second condition, checked or not checked. If checked then it's automatically call play() function and if it's not check then call the pause function.

<div ng-if="ramadan.date === date && ramadan.time === clock">
<div ng-if="ramadan.checked" ng-init="play()"></div>
<div ng-if="!ramadan.checked" ng-init="pause()"></div>
</div>


I want to convert this code by angular2 typescript. Is there any way to automatically call the function based on condition in angular 2?

Answer

There is no ng-init in Angular2. You can easily create such a directive yourself though.

@Directive({
  selector: '[ngInit]'
})
class NgInit {
  @Input() ngInit;
  ngOnInit() {
    if(this.ngInit) { this.ngInit(); }
  }
}

and then use it like

<div *ngIf="ramadan.date === date && ramadan.time === clock">
  <div *ngIf="ramadan.checked" [ngInit]="play"></div>
  <div *ngIf="!ramadan.checked" [ngInit]="pause"></div>
</div>