• [Angular] Angular Custom Change Detection with ChangeDetectorRef


    Each component has its own ChangeDetectorRef, and we can inject ChangeDetectorRef into constructor:

    export class ChildComponent implements OnInit {
    
      constructor(
        private cdr: ChangeDetectorRef
      )

    For example if you have a huge list can be updated in real time though some real time database.

    Update in real time is really expensive for huge list. 

    We have build a custom change detector, for example, update every 5 seconds, to check changes, to do that, we need to two things,

    1. Disable default change detector

    2. Check for changes every 5 seconds.

    import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
    import { ListService } from './list.service';
    
    @Component({
      selector: 'app-child',
      templateUrl: './child.component.html',
      styleUrls: ['./child.component.css']
    })
    export class ChildComponent implements OnInit {
    
      constructor(
        private cdr: ChangeDetectorRef,
        private dataProvider: ListService
      ) { 
        // disable default change detector
        cdr.detach();
        // now every 5second, do a check for its child tree
        setInterval(() => { this.cdr.detectChanges(); }, 5000);
      }
    
      ngOnInit() {
      }
    
    }

    There is another API: reattach() which uses for reset to default Angular change dectctor.

  • 相关阅读:
    【建站经验】 一个成熟的大型网站系统架构演化之路
    Puppet 安装配置
    SHELL二十篇(读书笔记)
    LINUX常见小问题汇总
    shell eval命令使用
    javaweb三大框架SSH
    Java Web(八) MVC和三层架构
    在CMD中操作mysql数据库出现中文乱码解决方案
    编码与解码
    JSONP
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10331474.html
Copyright © 2020-2023  润新知