Angular 从不使用回调的子组件调用父方法

Angular 从不使用回调的子组件调用父方法,angular,callback,angular-decorator,Angular,Callback,Angular Decorator,我有一种情况,我不确定发生了什么,所以基本上我有两个组件:父组件和子组件,我的结构如下所示: @Input() getPersonData: () => void; savePerson() { this.personService.savePersonData(personId, this.personPayload).subscribe( () => { this.getPersonData(); }); } 在父组件中

我有一种情况,我不确定发生了什么,所以基本上我有两个组件:父组件和子组件,我的结构如下所示:

@Input() getPersonData: () => void;

  savePerson() {
    this.personService.savePersonData(personId, this.personPayload).subscribe(
      () => {
        this.getPersonData();
      });
  }
在父组件中,我有一些显示在页面上的数据,当页面初始化时,我通过调用getPersonData()方法得到这些数据->这将从API返回人员数据

同样在父组件html中,我有子组件,其中我还需要刷新父组件中的数据的功能(以及查看html上反映的潜在更改),我在这里做的是,我从父组件作为@Input param函数传递,并在我想要刷新页面时从子组件调用它

父组件方法:

    getPersonData() {
        this.personService.getPersonData(id).then((data) => {
          this.personData = data;
          console.log(this.personData)
        });
    }
parrent组件html:

<div>
  {{person.firstName}} {{person.lastName}}
  <child-component [getPersonData]="getPersonData" ></child-component>
</div>

现在奇怪的事情发生了:在控制台日志和网络选项卡中,我看到了API调用,我看到了更改,但我的html仍然保留着旧数据,这是我不理解的,控制台日志数据和html数据不同,控制台日志和所有内容都在父组件中。谁能帮我理解这里发生了什么,我错过了什么?html未刷新的主要原因是什么,从父组件调用的personData似乎与从子组件调用的回调函数调用的parentData不同…

使用@output了解父组件在从子组件进行保存后调用get函数,这就像通知父组件在需要时进行调用一样

<child-component [getPersonData]="getPersonData" (getevent)="getPersonData()"></child-component>

child.component

@output getevent = new EventEmitter();

 savePerson() {
    this.personService.savePersonData(personId, this.personPayload).subscribe(
      () => {
      this.getevent.emit('');
      });
  }

子组件
@output getevent=新的EventEmitter();
储蓄人(){
this.personService.savePersonData(personId,this.personPayload).订阅(
() => {
this.getevent.emit(“”);
});
}

您所做的与应该做的相反:应该使用s,而不是输入!当我想通过事件发射器传递数据时,我看到了output Exmaple,对于我需要简单函数回调的情况,有什么具体的好做法吗?@SuperMario'sYoshi我想当你想用
@output
装饰器和
事件发射器调用父方法时,你需要通过检查。我已经给了你正式的文档。没有比这更好的例子了。