File

src/app/counter/counter.component.ts

Metadata

selector zone-counter
styleUrls counter.component.css
templateUrl ./counter.component.html

Constructor

constructor(_ngZone: NgZone)

Methods

init
init()

Función que lanza el contador. Incrementa campo cada seg

Returns: void
enterNgZone
enterNgZone()

Mete en la ngZone la función contador, con lo que se renderizará, el ctrol de cambios del ctx actuará
el campo en la vista cada ciclo.

Returns: void
exitNgZone
exitNgZone()

Saca de la ngZone la función contador, con lo que ya no se renderizará
el campo en la vista cada ciclo. No obstante la vble se sigue incrementando.
Al volver a entrar en la zona se hará un binding del valor actual del contador a
la vista

Returns: void
stop
stop()

Finaliza el intervalo

Returns: void

Properties

contador
contador: number
Default value: 0
interval
interval: number
zone
zone: string
Default value: dentro
import { Component, NgZone } from '@angular/core';
@Component({
  selector: 'zone-counter',
  templateUrl: './counter.component.html',
  styleUrls: ['./counter.component.css']
})
export class CounterComponent {

     contador= 0;
     interval: number;
     zone = 'dentro';
    constructor(private _ngZone: NgZone) {}

    /**
     * Función que lanza el contador. Incrementa campo cada seg
     * @memberOf CounterComponent
     */
    init() {
        // Limpia interval activo
        window.clearInterval(this.interval);
        this.interval = window.setInterval(() => {this.contador++; } , 500);
    }

    /**
     * Mete en la ngZone la función contador, con lo que se renderizará, el ctrol de cambios del ctx actuará
     * el campo en la  vista cada ciclo.
     * @memberOf CounterComponent
     */
    enterNgZone () {
        this.zone = 'dentro';
        this._ngZone.run (() => this.init());
    }

   /**
     * Saca de la ngZone la función contador, con lo que ya no se renderizará
     * el campo en la  vista cada ciclo. No obstante la vble se sigue incrementando.
     * Al volver a entrar en la zona se hará un binding del valor actual del contador a
     * la vista
     * @memberOf CounterComponent
     */
    exitNgZone () {
        this.zone = 'fuera';
        this._ngZone.runOutsideAngular(() => this.init());
    }

     /**
     * Finaliza el intervalo
     * @memberOf CounterComponent
     */
    stop () {
        this.zone = 'dentro';
        window.clearInterval(this.interval);
        this.contador = 0;
    }
}

<section class="counter">
    <div class="contenido">
        <span class="big red">{{contador}}</span>
        <span class='green'> Estamos {{zone}} de ngZone</span>
        <span class='red' *ngIf="zone == 'fuera'">, el contador se sigue incrementando pero no se renderiza</span>
    </div>
    <div class="opciones">
        <a md-raised-button (click)="init()"><i class="material-icons">play_circle_outline</i>Init!</a>
        <a md-raised-button (click)="stop()"><i class="material-icons">stop</i>Reset!</a>
        <a md-raised-button (click)="exitNgZone()"><i class="material-icons">open_in_new</i>Salir de ngZone</a>
        <a md-raised-button (click)="enterNgZone()"><i class="material-icons">open_in_browser</i>Entrar de ngZone</a>
    </div>
</section>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""