如何用带信号的主题替换服务?

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

假设我有一个非常简单的共享服务,包含一个主题:

@Injectable({ providedIn: 'root' })
export class MyService {
  private _runTaskSubject = new Subject<string>();
  
   get runTaskSubject$() {
     return this._runTaskSubject.asObservable();
   }

   runTask(name: string) {
     this._runTaskSubject.next(string);
   }
}

只有在调用

runTaskSubject$
后,
runTask
的观察者才会收到通知。

现在我正在考虑使用

signals
转换此服务,但似乎不是一个选项,因为
signals
始终保留初始值。那么对于这个用例保留我的 rxjs
Subject
有意义吗?

angular rxjs angular-signals
1个回答
0
投票

其等效信号如下。

@Injectable({ providedIn: 'root' })
export class MyService {
  private _runTaskSignal = signal<string | undefined>();
  
   get runTaskSignal() {
     return this._runTaskSignal.asReadOnly();
   }

   runTask(name: string) {
     this._runTaskSignal.set(string);
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.