Angular Signals 通过 RxJS Subject 在组件之间传递信息,而这些 Subject 可以是 Observable。在使用 Angular Signals 时,需要注意 Observable 的订阅和退订。
当使用 Angular Signals 时,RxJS Observables 的变化检测机制会发生变化。传递的数据来自外部环境,Angular 在这种情况下不能保持变化检测的同步。需要手动调用 ChangeDetectorRef.detectChanges() 来触发变化检测。
示例代码:
import { Component, ChangeDetectorRef } from '@angular/core'; import { Observable, Subject } from 'rxjs';
@Component({
selector: 'app-root',
template:
})
export class AppComponent {
data: string;
dataSubject = new Subject
{{data}}
constructor(private cdr: ChangeDetectorRef) {}
ngOnInit() { this.dataSubject.subscribe((data) => { this.data = data; this.cdr.detectChanges(); }); }
onClick() { this.dataSubject.next('New Data'); } }