Suche…


Verweis auf NgZone bekommen

NgZone Referenz kann über die Dependency Injection (DI) NgZone werden.

meine.komponente.ts

import { Component, NgOnInit, NgZone } from '@angular/core';
  
@Component({...})
export class Mycomponent implements NgOnInit {
  constructor(private _ngZone: NgZone) { }
  ngOnInit() {
    this._ngZone.runOutsideAngular(() => {
      // Do something outside Angular so it won't get noticed
    });
  }
}

Verwenden Sie NgZone, um mehrere HTTP-Anforderungen auszuführen, bevor Sie die Daten anzeigen

runOutsideAngular kann verwendet werden, um Code außerhalb von Angular 2 auszuführen, sodass die Änderungserkennung nicht unnötig ausgelöst wird. Dies kann verwendet werden, um beispielsweise mehrere HTTP-Anforderungen auszuführen, um alle Daten vor dem Rendern abzurufen. Um Code in Angular 2 erneut auszuführen, kann die run Methode von NgZone verwendet werden.

meine.komponente.ts

import { Component, OnInit, NgZone } from '@angular/core';
import { Http } from '@angular/http';
  
@Component({...})
export class Mycomponent implements OnInit {
  private data: any[];
  constructor(private http: Http, private _ngZone: NgZone) { }
  ngOnInit() {
    this._ngZone.runOutsideAngular(() => {
      this.http.get('resource1').subscribe((data1:any) => {
        // First response came back, so its data can be used in consecutive request
        this.http.get(`resource2?id=${data1['id']}`).subscribe((data2:any) => {
          this.http.get(`resource3?id1=${data1['id']}&id2=${data2}`).subscribe((data3:any) => {
            this._ngZone.run(() => {
              this.data = [data1, data2, data3];
            });
          });
        });
      });
    });
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow