how to disable angular2 change detection for 3rd party libraries

后端 未结 2 811
感动是毒
感动是毒 2020-12-09 05:01

I have google maps which triggers 100+ times per second change detection. how to disable change detection for this.

Click here for map preview

it will be eve

相关标签:
2条回答
  • 2020-12-09 05:29

    I had the same issue, try injecting the NgZone class on your component constructor

    constructor(private zone: NgZone) {
    
    )
    

    then, use the runOutsideAngular method from NgZone to put in a callback the draw method from google charts, do something like this.

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

    This make the executed code don't fire angular detection changes. Apply this for each chart you make. I hope find this helpful.

    Thanks to this

    0 讨论(0)
  • 2020-12-09 05:31

    Another option to temporary disable change detection ChangeDetectorRef

    enabled = true;  
    constructor(private ref: ChangeDetectorRef)
    
    toggleChangeDetection() {
      if (this.enabled) 
      {
        this.enabled = false;
        this.ref.detach();
      }
      else {
        this.enabled = true;
        this.ref.reattach();
    }
    
    0 讨论(0)
提交回复
热议问题