通过输入值更新组件数据

时间:2019-03-13 09:22:35

标签: angular observable

这是一个示例组件

export class childComponent implements OnChanges {
  @Input idToCheck: number
  public myData;

  constructor(private myService:MyService){}

  ngOnChanges() {
    this.myService.getData(id).subscribe(data-> {
      this.myData = data;
    })
}

这是最好的方法吗?因为每次输入更改时都会调用订阅,我可以将其放在onInit函数上吗?

感谢和问候

1 个答案:

答案 0 :(得分:0)

在这种情况下,我更喜欢使用setter函数,例如:

@Input() set idToCheck (id: number) {
    // ignore the value if id is undefined
    if(id == undefined) return;
    // call the service function when the id is passed
    this.myService.getData(id).subscribe(data-> {
      this.myData = data;
    });
}

因此,每次父组件更改 idToCheck 输入的值时,将调用这些行。

我认为这是更简单明了的方式。

详细了解setter