effect() 内的角度信号

问题描述 投票:0回答:1

在组件中,我访问 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
        });
      }
    });
angular rxjs signals
1个回答
0
投票

您只需使用

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([]);
    })
  );
© www.soinside.com 2019 - 2024. All rights reserved.