如果在Angular 9中订阅emitter时值不更新,可能是由于不正确地使用rxjs中的Subject或BehaviorSubject导致的。以下是一个示例解决方法:
首先,确保您正确地创建了一个Subject或BehaviorSubject,并将其用作emitter。例如,在组件中创建一个BehaviorSubject:
import { BehaviorSubject } from 'rxjs';
export class MyComponent {
myValue$ = new BehaviorSubject('initial value');
// ...
updateValue(newValue: string) {
this.myValue$.next(newValue);
}
}
然后,在订阅该emitter时,使用async管道确保及时更新值。例如,在组件的HTML模板中:
{{ myValue$ | async }}
这样,当emitter发出新的值时,模板中的值将自动更新。
如果您仍然遇到问题,可能是由于使用了不正确的订阅方法或使用了错误的上下文。请确保您在正确的位置和正确的上下文中进行订阅。例如,在组件的ngOnInit方法中订阅:
import { OnInit } from '@angular/core';
import { MyService } from './my.service';
export class MyComponent implements OnInit {
myValue: string;
constructor(private myService: MyService) {}
ngOnInit() {
this.myService.myValue$.subscribe(value => {
this.myValue = value;
});
}
}
希望这些示例可以帮助您解决在订阅emitter时值不更新的问题。如果问题仍然存在,请提供更多的代码和上下文,以便我们能够更好地帮助您。