Angular 2
Zone.js
Szukaj…
Uzyskiwanie odniesienia do NgZone
Odniesienie do NgZone
można wstrzyknąć za pomocą wstrzykiwania zależności (DI).
my.component.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
});
}
}
Korzystanie z NgZone do wykonywania wielu żądań HTTP przed wyświetleniem danych
runOutsideAngular
może być używany do uruchamiania kodu poza Angular 2, aby niepotrzebnie nie uruchamiał wykrywania zmian. Można tego użyć na przykład do uruchomienia wielu żądań HTTP, aby uzyskać wszystkie dane przed ich renderowaniem. Aby ponownie uruchomić kod wewnątrz kątowej 2, run
metodą NgZone
mogą być użyte.
my.component.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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow