gpt4 book ai didi

javascript - NGOnInit 外部订阅

转载 作者:行者123 更新时间:2023-12-03 03:33:59 26 4
gpt4 key购买 nike

我有两个子组件,我想在它们之间传递数据,为此我使用服务。

在服务中我有

 headerObject = new Subject<HeaderObject>();

在第一个组件中我有方法

  onClick() {
this.listImage = this.imageService.getImages();
let headers = new HeaderObject();
headers.file = this.listImage[0].data;
this.documentService.getOcrDocument(headers).subscribe(res => {
headers = res;
this.ocrService.headerObject.next(headers);
})

在第二个组件中

   headerSubcribed: HeaderObject;
private headerSubscription: Subscription;

ngOnInit() {
this.headerSubscription =
this.ocrService.headerObject.subscribe((ocrHeader: HeaderObject) => {
this.headerSubcribed = ocrHeader;
}

但是 ngOnInit() 仅在渲染 View 后一次,我想将此代码移动到 ngOnit 外部并执行它,但我不知道如何?一些提示如何执行该代码?我在发出值的 next() 方法处设置断点,但后来的方法 subscribe 未执行?我可能做错了什么?

最佳答案

您可以观察/订阅两部分

观察某事并发出通知。在您的服务中,您有一个 Subject 类型变量,并且您通过调用 next() 将值推送到它。当这个方法被调用时,它会通知所有观察者意味着谁订阅了它。

倾听观察者的声音并采取行动当您聆听观察者的声音时,您会在他们更改值时获得更新。无论您将订阅放在 onNginit 还是构造函数中都没关系,如果代码在那里,它会在发生更改时通知您。

您还可以探索 BevavourSubject(如果它适合您的情况)。

关于javascript - NGOnInit 外部订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com