如何从父组件刷新数据?

时间:2019-02-06 08:31:26

标签: angular

嗨,我想从父组件刷新我的时间戳记值。

我的parentComponent.ts

public updateComponent(){
    this.timestamp = new Date();
    this.timestamp.setDate(this.timestamp.getDate() - 30);
    this.timestamp = this.timestamp.toJSON();
}

public ngOnInit() {
  this.updateComponent();
  interval(10000).subscribe(() => {
      console.error('called');
      console.error(this.timestamp);
      this.updateComponent();
  });

}

//my parent.component.html
<app-dashboard-card [refresh]="timestamp"></app-dashboard-card>



//When I catch my data
private ts: any;

@Input()
set refresh(timestamp: any) {
  console.error("TIMESTAMP CHANGE -> ", timestamp);
  this.ts = timestamp;
};

我不知道为什么在更改时间戳时我的@Input无法捕获。

2 个答案:

答案 0 :(得分:0)

您的代码似乎仅使用setInterval()就可以正常工作 here

  

建议:您无需使用setter here; 就可以实现相同的目的,只需将时间戳记添加到子组件中即可,如下所示-

@Input() timestamp: any;

ngOnChanges() {
    console.log("TIMESTAMP CHANGE -> ", this.timestamp);
}

注意:请记住要检查控制台中的日志。

答案 1 :(得分:0)

在父组件中更改对象的引用时,会调用

ngOnChanges()

  import { Input, SimpleChanges } from "@angular/core";

  ngOnChanges(changes: SimpleChanges) {
    if (changes['refresh']) {
      //do something after value change
    }
  }