Angular TimerObervable没有看到组件字段?

时间:2018-05-10 13:55:16

标签: angular timer rxjs

这是我的组件的TS文件:

import { Component, OnInit } from '@angular/core';
import {TimerObservable} from "rxjs/observable/TimerObservable";

@Component({
  selector: 'app-dashboard',
  templateUrl: './dashboard.component.html',
  styleUrls: ['./dashboard.component.css']
})
export class DashboardComponent implements OnInit {

  userWarn = true;
  constructor() { }

  ngOnInit() {
    let timer = TimerObservable.create(0, 1000);
    timer.subscribe(this.fun);

  }

  fun(t){
    if(t === 10)
      this.userWarn = false;

    console.log(t);
    console.log('userWarn: ' + this.userWarn);
  }

}

计时器启动,并继续计数,但是当它将用户警告记录到控制台时,它显示&#34; undefined&#34;对于t <10s。当我在ngOnInit方法中将userWarn记录到控制台时,它会记录&#34; true&#34;,所以我想定期执行fun函数的任务没有看到组件中的userWarn?但我不知道该怎么做才能完成我想要的工作。我需要这个,因为我有一个绑定到userWarn的html标签。

<div class="warning-log" *ngIf="userWarn" ><h1>Potwierdź obecność!</h1></div>

1 个答案:

答案 0 :(得分:0)

这是因为你必须使用&#34;包装&#34; subscribe()内的函数,如下所示:

timer.subscribe(d => this.fun(d));

这是一个实例:STACKBLITZ