我对 Typescript 和 Web 开发真的很陌生。当我订阅一个事件并且找不到解决方案时,我发现了一件奇怪的事情。我有一个包含 a 的BehaviorSubject
服务carId
。我有一个页面,其中有一个 id 列表,如果我点击一个 id,它会调用setCarId
. 到目前为止,一切正常。
这是服务:
@Injectable()
export class CarService {
private carId = new BehaviorSubject("");
setCarId(carId: string) {
this.carId.next(carId);
}
getCarId(): Observable<string> {
return this.carId.asObservable();
}
我还有另一项服务,我订阅carId
. 在这个我有一个汽车对象,我想从我的汽车数组中获取那辆车,我的BehaviorSubject
. 我用我的代码中的方法得到了我需要的汽车,array.find
它工作正常,但不是订阅。我不知道为什么,但是使用这一行this.car = this.cars.find(car => car.carId == carId)
不会调用 subscribe 方法,但没有那行它可以正常工作。
@Injectable()
export class MyService {
subscription: Subscription;
car: Car;
cars: Array<Car>;
constructor(private carService: CarService){
this.subscription.getCarId().subscribe(carId=> {
console.log('DO SOMETHING') //
//with this row NOT working, without this row working
this.car = this.cars.find(car => car.carId == carId)
});
... //MORE CODE
我不知道为什么会发生这种情况以及如何解决它,所以请帮助我。