Angular 事件发射多层次策略

Angular 事件发射多层次策略,angular,eventemitter,Angular,Eventemitter,是否有从嵌套组件堆栈中最底层组件向上传递数据的正式约定?我遵循的是聪明的父母,愚蠢的孩子的惯例,我很难决定是让孙子传给父母,还是让父母传给祖父母,还是仅仅使用服务。我对使用服务犹豫不决,因为组件是相关的,我希望避免我的服务与主题过于混乱 我知道最好保持文件夹结构尽可能平坦,尽可能避免嵌套组件,但在我的具体情况下,将其深3层是有意义的 选项1:孙子孙女到祖父母 根据对服务的评论判断,虽然存在分歧,但经验丰富的开发人员似乎倾向于避免选项1。我很想听听其他人对此的看法,但就我个人而言,我的答案是“视情

是否有从嵌套组件堆栈中最底层组件向上传递数据的正式约定?我遵循的是聪明的父母,愚蠢的孩子的惯例,我很难决定是让孙子传给父母,还是让父母传给祖父母,还是仅仅使用服务。我对使用服务犹豫不决,因为组件是相关的,我希望避免我的服务与主题过于混乱

我知道最好保持文件夹结构尽可能平坦,尽可能避免嵌套组件,但在我的具体情况下,将其深3层是有意义的

选项1:孙子孙女到祖父母
根据对服务的评论判断,虽然存在分歧,但经验丰富的开发人员似乎倾向于避免选项1。我很想听听其他人对此的看法,但就我个人而言,我的答案是“视情况而定”,如果您的组件自然紧密结合在一起,那么选项1似乎是合理的。从对的评论来看,虽然存在分歧,但经验丰富的开发人员似乎倾向于避免选项1。我很想听听其他人对此的看法,但就我个人而言,我的答案是“视情况而定”,如果您的组件自然紧密结合在一起,那么选项1似乎是合理的。
saveFormValues() {
    this.eventEmitter.emit(this.myForm.value);
}
<app-grandchild (eventEmitter)=relayFormValues($event)></app-grandchild>
relayFormValues(values) {
    this.relayEvent.emit(values)
}
<app-parent (relayEvent)=saveChanges($event)></app-parent>
saveChanges(values) {
    this.myService.save(values).subscribe(() => {...});
}
formSaveEventSource = new Subject<any>;
formSaveEvent$ = this.formSaveEventSource.asObservable();
...
saveFormEvent(values) {
    this.formSaveEventSource.next(values)
}

save(values) {
// http request
}
saveFormValues() {
    this.myService.saveFormEvent(this.myForm.value);
}
this.formSaveSub = this.myService.formSaveEvent$.subscribe(data => {
  this.saveChanges(data);
});
...
this.saveChanges(data) {
  this.myService.save(data).subscribe(() => {...})
}