从不使用回调的子组件调用父方法
Calling parent method from child component not working with callback
我有一种情况,但我不确定发生了什么,所以基本上我有两个组件:父组件和子组件,我的结构如下所示:
在父组件中,我有一些数据显示在页面上,我在页面初始化时调用方法 getPersonData() 获取该数据 -> 这个 returns 来自 API 的人员数据。
也在父组件中 html 我有子组件,我还需要在父组件中刷新数据的功能(并查看反映在 HTML 上的潜在更改),我在这里所做的是,当我想刷新页面时,我从父组件作为@Input 参数函数传递并从子组件调用它。
父组件方法:
getPersonData() {
this.personService.getPersonData(id).then((data) => {
this.personData = data;
console.log(this.personData)
});
}
父组件html:
<div>
{{person.firstName}} {{person.lastName}}
<child-component [getPersonData]="getPersonData" ></child-component>
</div>
在子组件中我有这样的东西:
@Input() getPersonData: () => void;
savePerson() {
this.personService.savePersonData(personId, this.personPayload).subscribe(
() => {
this.getPersonData();
});
}
现在奇怪的事情发生了:在控制台日志和网络选项卡中,我看到 API CALL 已经完成,我看到那里发生了变化,但是我的 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('');
});
}
我有一种情况,但我不确定发生了什么,所以基本上我有两个组件:父组件和子组件,我的结构如下所示:
在父组件中,我有一些数据显示在页面上,我在页面初始化时调用方法 getPersonData() 获取该数据 -> 这个 returns 来自 API 的人员数据。
也在父组件中 html 我有子组件,我还需要在父组件中刷新数据的功能(并查看反映在 HTML 上的潜在更改),我在这里所做的是,当我想刷新页面时,我从父组件作为@Input 参数函数传递并从子组件调用它。
父组件方法:
getPersonData() {
this.personService.getPersonData(id).then((data) => {
this.personData = data;
console.log(this.personData)
});
}
父组件html:
<div>
{{person.firstName}} {{person.lastName}}
<child-component [getPersonData]="getPersonData" ></child-component>
</div>
在子组件中我有这样的东西:
@Input() getPersonData: () => void;
savePerson() {
this.personService.savePersonData(personId, this.personPayload).subscribe(
() => {
this.getPersonData();
});
}
现在奇怪的事情发生了:在控制台日志和网络选项卡中,我看到 API CALL 已经完成,我看到那里发生了变化,但是我的 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('');
});
}