使用BehaviorSubject来代替EventEmitter,以便Async Pipe能够订阅到初始值。
代码示例:
在组件中定义BehaviorSubject并将其用作输出:
// 导入BehaviorSubject
import { BehaviorSubject } from 'rxjs';
@Component({
selector: 'my-component',
template: `Value: {{ value$ | async }}`
})
export class MyComponent {
// 将BehaviorSubject用作输出
public value$ = new BehaviorSubject('initial value');
ngAfterViewInit() {
// 修改BehaviorSubject值
this.value$.next('new value');
}
}
使用上述代码示例中的代码,Async Pipe订阅的初始值将是“initial value”。在ngAfterViewInit()钩子中,我们可以使用next()方法将值更改为“new value”。由于使用BehaviorSubject而不是EventEmitter,Async Pipe可以成功订阅到初始值并接收值的变化。