我有两个子组件,我希望在它们之间传递数据,为此我使用服务。
在服务中我有
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()我想将此代码移到ngOnit之外并执行它但我不知道怎么做?如何执行该代码的一些提示?我在next()方法中设置了断点,它发出了值,但后来的方法订阅却没有执行?我能做错什么?
答案 0 :(得分:1)
您可以观察/订阅两部分
观察并通知。
在您的服务中,您有一个Subject
类型变量,并且您通过调用next()将值推送到它。当这个方法调用时,它通知所有观察者意味着谁订阅它。
倾听观察者并采取行动 当您收听观察者时,您会在更改值时获得更新。如果您将订阅放在onNginit或构造函数中并不重要,如果代码在那里,它会在有更改时通知您。
如果符合您的情况,您还可以探索BevavourSubject
。