Converting Angular 1 to Angular 2 ngInit function

前端 未结 3 1740
感动是毒
感动是毒 2021-01-07 05:35

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

相关标签:
3条回答
  • 2021-01-07 05:39

    You can use ngOnInit method in your component class but remember to implements the OnInit interface.

    Here's an example:

    @Component({
      selector: 'ramadan',
      template: `<div>Ramadan</div>`
    })
    class Ramadan implements OnInit {
      ngOnInit() {
        this.play();
      }
    }
    

    You can fin more about ngOnInit here.

    0 讨论(0)
  • 2021-01-07 05:57

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

    import { Directive, Input } from '@angular/core';
    
    @Directive({
        selector: '[ngInit]'
    })
    export 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>
    
    0 讨论(0)
  • 2021-01-07 06:04

    Working code,

    Custom directive:

    import { Directive, Input } from '@angular/core';
    
    @Directive({ selector: '[myCondition]' })
    
    export class ngInitDirective {
      constructor() { }
    
    
      @Input() set myCondition(condition: boolean) {
        if (!condition) {
          console.log("hello")
        } else {
          console.log("hi")
        }
      }
    }
    

    In template:

    <ion-label *ngIf="setting1.date === current_date && setting1.time === current_time">
              <div *myCondition="setting1.checked === condition" >Play</div>
              <div *myCondition="!setting1.checked === !condition">pause</div>
          </ion-label>
    
    0 讨论(0)
提交回复
热议问题