我有一个在Angular中调用REST端点并返回EntryDTO列表的Feed服务。以下是该服务的示例代码:
@Injectable({providedIn: 'root'})
constructor(private http: HttpClient) {}
export class FeedService() {
getPublicFeedEntries: Observable<EntryDTO[]> () {
return this.http.get('/rest/publicFeedEntries/).map((response: Response) => response.json()).catch((err: any) => Observable.throw(error.josn().error || 'error');
}
}
那么我可以有一个订阅这个可观察对象的反馈组件:
export class FeedComponent() {
private feedEntries: EntryDTO[];
constructor(private feedService: FeedService) { feedEntries = new Array(); }
ngOnInit() {
this.feedService.getPublicFeedEntries.subscribe(entries => {
this.feedEntries = entries;
}, err => {console.log(err) })
}
}
将Observable返回到服务中并在组件中订阅,这是否被认为是最佳实践?还有其他的最佳实践吗?
.pipe(takeUntil( /* Subject */))
。我通常会有一个属性destroyed$: Subject<void> = new Subject<void>();
,并在ngOnDestroy
钩子中调用this.destroyed$.next()
。这将在组件销毁时停止订阅,并停止任何可能影响性能的订阅泄漏。 - Baruch