3 回答
TA贡献1815条经验 获得超13个赞
您可以通过多种方式完成此操作,因为这些组件彼此不相关,您可以引入状态服务并使用可观察对象。请参阅下面可能的解决方案
创建一个新的状态服务 ListStateService
export class ListStateService {
private listData = new BehaviorSubject<NewList >({} as NewList);
listData$ = this.listData .asObservable();
}
将 ListStateService 注入 NewListMenuComponent
在 onSubmit 中,更新后,
const lists = this.listService.updateLists(newListObj);
this.listData .next(lists );
将 ListStateService 注入 SubHeaderComponent 在 ngOnInit() 中,订阅 ListStateService.listData$,在这里您将获得更改的值
TA贡献1900条经验 获得超5个赞
在您的服务中,使用事件发射器(非常有用):
import { EventEmitter } from "@angular/core";
@Output() myEvent: EventEmitter<any> = new EventEmitter();
然后通过您的服务向您的子标题组件发送新数据,如下所示:
emitEvent (newData: Array<string>) {
this.myEvent.emit({
data: newData,
});
}
订阅子标题组件中的新数据ngOnInit并使用它:
this.myService.myEvent.subscribe((newData: Array<string>) => {
console.log(JSON.stringify(newData.data));
});
注意:如果在组件中不断地重新订阅,订阅会导致内存泄漏,所以您可以保存订阅并unsubscribe()在ngOnDestroy回调中调用它。
TA贡献1752条经验 获得超4个赞
有点不清楚您要做什么,但是如果您尝试将数据从父组件传递到子组件,则可以使用 Input 字段或 ViewChild
使用您的父母可能看起来像这样的输入字段:
<app-sub-header [names]="names"></app-sub-header>
然后在孩子中使用“输入”字段。更新父级中的名称应实时更新子级中相同的命名变量。
添加回答
举报