我从两个文件(即 x.ts 和 y.ts)调用以下函数,但在从第三方工具检查时,它显示了两个文件中的重复代码。它位于我在两个文件中调用的消息服务下方。
this.dataSubscription = this.dataService.allmesgeObeject.subscribe(data=> {
if (data) {
this.x= data.x;
this.y= data.y;
}
});
是否有任何方法可以将订阅功能放入一个公共(public)文件中并在各自的文件中接收数据。
最佳答案
您可以在服务中创建主题,然后从两个组件中订阅它。这样您只需调用 API 一次,两个组件都将使用最新数据进行更新
export class DataService{
public allMessages: Subject<any> = new Subject();
constructor(
private http: HttpClient
) { }
allmesgeObeject() {
return this.http.get(...).pipe(
map((result) => {
this.allMessages.next(result);
}));
}
}
然后从服务外部调用一次
this.dataService.allmesgeObeject.subscribe();
现在,您可以在两个组件中订阅之前创建的主题。
this.dataService.allMessages.subscribe(data=> {
if (data) {
this.x= data.x;
this.y= data.y;
}
});
关于javascript - 从公共(public)文件调用 Angular Observable.subscribe(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248825/