以下代码中的公告值更改成功。 effect 执行一次,但不是在 changeDates 执行。
effect
changeDates
@Injectable({ providedIn: 'platform', }) export class AnnouncementsService { announcements: WritableSignal<Announcements>; constructor(private logger: NGXLogger) { this.announcements = signal({ start: new Date('2023-08-27'), end: new Date('2023-09-03'), content: `some content`, }); effect(() => {this.logger.debug('test data')}) } changeDates(howMuch: number) { this.announcements.update((announcements: Announcements) => { announcements.start.setDate(announcements.start.getDate() + howMuch); announcements.end.setDate(announcements.end.getDate() + howMuch); return announcements; }); } goForward() { this.changeDates(7); } goBackwards() { this.changeDates(-7); } }
是虫子吗?我做错了什么?
如角 doc :
效果始终至少运行一次。当效果运行时,它会跟踪任何 信号值读取。每当这些信号值中的任何一个发生变化时 效果再次运行。
您需要读取效果内部的信号,以便在信号值更改时运行效果
effect(() => {this.logger.debug(`test data ${this.announcements()}`)})