zoukankan      html  css  js  c++  java
  • [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.

  • 相关阅读:
    Rabbitmq 不同系统 间 调用
    《 工作呀工作 之 excel 上传 》
    List 中删除 元素
    springboot jpa 的使用 二
    java中级面试题 之linux 与数据库
    java中级面试题 之基础篇
    git 操作
    eclipse 安装lombok插件
    瑞士轮
    Piggy-Bank
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10331474.html
Copyright © 2011-2022 走看看