2016-08-17 10 views
8

Mam mapy google, które wyzwalają wykrywanie zmian 100+ razy na sekundę. jak wyłączyć wykrywanie zmian dla tego.jak wyłączyć wykrywanie zmiany kąta 2 dla bibliotek stron trzecich

Click here for map preview

będzie jeszcze gorzej, gdy za pomocą zdarzenia mouseover.

ngDoCheck() { 
    console.log('do check', this.i++); 
} 
+0

Nie sądzę, jest to związane z 3rd party directived. Angular2 uruchamia wykrywanie zmian po każdym zdarzeniu. Możesz ustawić 'ChangeDetectionStrategy.OnPush', aby wykonać ręczne wykrywanie zmian. –

Odpowiedz

16

miałem ten sam problem, spróbuj wstrzykiwanie klasę NgZone na składnik konstruktora

constructor(private zone: NgZone) { 

) 

następnie użyj metody runOutsideAngular z NgZone umieścić w zwrotnego sposób czerpać z wykresów google, zrobić coś takiego.

this.zone.runOutsideAngular(() => { 
    var chart = new google.visualization.PieChart(nativeElement); 
    chart.draw(dataTable, options); 
}) 

To powoduje, że wykonany kod nie wywołuje zmian kątowych detekcji. Zastosuj to dla każdego tworzonego wykresu. Mam nadzieję, że to pomoże.

Thanks to this

+0

Dzięki. Użyłem tego na mojej stronie internetowej animacji płótna https://github.com/aviabird/website/blob/master/src/app/shared/services/canvas-animate.service.ts – pkrawat1

6

Inną opcją wykrywania zmian czasowo wyłączyć ChangeDetectorRef

enabled = true; 
constructor(private ref: ChangeDetectorRef) 

toggleChangeDetection() { 
    if (this.enabled) 
    { 
    this.enabled = false; 
    this.ref.detach(); 
    } 
    else { 
    this.enabled = true; 
    this.ref.reattach(); 
} 
Powiązane problemy