在组件中,我访问 item_id 作为输入参数。 如果构造函数/ngOnInit()effect()内部不允许调用toSignal()或.subscribe()来服务方法,我可以在哪里调用toSignal()或.subscribe()?
item_id = input<string>();
constructor() {
effect(() => {
const itemId = this.item_id();
if (itemId !== undefined) {
this.itemSvc.setItemId(itemId); // setup the observable service with itemId
this.itemSvc.itemDetails().subscribe({ }) // subscribe to get the data about particular itemId
});
}
});
您只需使用
toObservable
即可。要转换为 observable,请使用 switchMap
切换到您需要的 API observable,这将在信号变化时做出反应。
item_id = input<string>();
itemDetails = toObservable(this.item_id).pipe(
switchMap((itemId: string) => {
if (itemId !== undefined) {
this.itemSvc.setItemId(itemId); // setup the observable service with itemId
return this.itemSvc.itemDetails();
}
return of([]);
})
);