【发布时间】:2019-05-11 01:04:48
【问题描述】:
我的目标是,从子组件中,我想在父组件中调用一个方法并获取返回值。我尝试了以下方法,但没有成功。
在 parent.html 中
<child-component [config]="getConfig(data)"></child-component>
在 parent.ts 中
data = <some data>
...
getConfig(val) {
// format value and return
return formattedVal;
}
在 child.ts 中
@Input() config: Function
...
retrieve() {
const conf = this.config();
}
我收到一个错误“this.config 不是函数”
另外,我尝试使用 EventEmitter,但这一次,它返回“未定义”
在 parent.html 中
<child-component (config)="getConfig(data)"></child-component>
在 child.ts 中
@Output() config = new EventEmitter();
...
retrieve() {
const conf = this.config.emit;
}
【问题讨论】:
-
为什么要这样做?您的 getConfig 方法返回一个配置并将其发送给孩子,您为什么要获取该功能?您需要获取配置。 stackblitz.com/edit/angular-dgt2xf
-
我需要这样做,因为以下原因:孩子订阅了一个 observable。当它被触发时,孩子会得到一组新的配置。这组新的配置是父级对原始配置进行格式化的结果。
-
另外,我不希望孩子知道配置的格式。它只需要通过调用这个函数来获取配置。我也不希望父母触发孩子的方法。
-
如果配置只是在子节点中触发,为什么要从父节点发送?以父格式触发可观察数据并将其发送给子。
-
子组件是可重用的。例如,父组件有一个网格列表,其中包含多个此类子组件。当 observable 被触发时,这些子组件应该能够重新加载它们的数据。但他们需要父母的配置。我不希望孩子知道如何格式化这个配置,他们只需要从父母那里获取最新的配置。如果我只是将它发送给孩子,我将如何告诉孩子重新加载其数据?
标签: angular