繁体   English   中英

Angular ChangeDetectorRef 渲染实时数据

[英]Angular ChangeDetectorRef render live data

我正在尝试获取有关 angular 基本组件的实时数据。

我期望的是:HTML 渲染每 1 秒自动递增一次(即:0、1、2、3、4、5..等)

我得到了什么:HTML 渲染:0 然后 1。(增加一次然后停止)

Stackblitz url for demonstration (appologize if url not valid, first time sharing my code): https://stackblitz.com/edit/angular-9-starter-material-jdjcjp?file=src%2Fapp%2Fapp.component.ts

我的代码:

import {
  Component,
  OnInit,
  ChangeDetectionStrategy,
  ChangeDetectorRef,
} from '@angular/core';
import { FormGroup, FormBuilder, FormArray } from '@angular/forms';
import { Observable, BehaviorSubject, combineLatest, timer } from 'rxjs';
import { map, tap } from 'rxjs/operators';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AppComponent {
  constructor(private cdr: ChangeDetectorRef) {}

  item = 0;

  ngOnInit(): void {
    timer(1000)
      .pipe(
        tap(() => {
          this.item++;
          this.cdr.markForCheck();
        })
      )
      .subscribe();
  }
}

使用 RxJs间隔代替定时器

interval(1000)  // emit every 1000 milliseconds
      .pipe(
        tap(() => {
          this.item++;
        })
      )
      .subscribe();

找到了:

ngOnInit() {
return setInterval(() => {
      this.item++;
      this.cdr.markForCheck();
}, 1000);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM