Javascript 发生更改时未更新数组10

Javascript 发生更改时未更新数组10,javascript,angular,rxjs,Javascript,Angular,Rxjs,有一个可观察的,它向我的组件发送一系列报价。 但是,当列表被更改(一个被删除)时,它不会更改我在组件中得到的列表 我尝试了使用ngOnChanges再次订阅列表并在我的组件中更新列表,但它没有检测到列表上的任何更改 当我使用ngDoCheck时,它起到了作用,但我想要一个不那么激烈的解决方案 offer.service.ts: //可观察到的报价列表 public getAll():可观察{ 退还(本报价); } 组件。ts: 优惠:优惠[]=[]; 选择OfferId=-1; 构造函数(专用

有一个
可观察的
,它向我的组件发送一系列报价。 但是,当列表被更改(一个被删除)时,它不会更改我在组件中得到的列表

我尝试了使用
ngOnChanges
再次订阅列表并在我的组件中更新列表,但它没有检测到列表上的任何更改

当我使用
ngDoCheck
时,它起到了作用,但我想要一个不那么激烈的解决方案

offer.service.ts

//可观察到的报价列表
public getAll():可观察{
退还(本报价);
}
组件。ts:

优惠:优惠[]=[];
选择OfferId=-1;
构造函数(专用offerService:offerService){}
ngOnInit():void{
this.offerService.getAll().subscribe(数据=>{
此参数=数据;
});
}
ngOnChanges():void{
this.offerService.getAll().subscribe(数据=>{
此参数=数据;
});
}

您可以使用Observable和Subject(这是Observable的一种类型)在组件之间进行通信,我不会详细介绍,您可以获得更多信息,有两种方法:Observable.subscribe()和Subject.next()

可观察。订阅()

可观察订阅方法由角度组件用于订阅发送给可观察组件的消息

Subject.next()

subject next方法用于向可观测对象发送消息,然后将消息发送给作为该可观测对象订户的所有角度分量

解决方案:

offer.service.ts:

import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';

@Injectable({ providedIn: 'root' })
export class OfferService {
    private subject = new Subject<any>();
    
    //...

    getOffers(message: string) {
        return this.subject.asObservable();
    }

    removeOffers() {
      //...remove logic
      this.subject.next({this.offers})
    }

}

您需要创建一个主题并订阅它,@lissettdm谢谢,但我不知道在哪里使用它。我是否需要在我的组件ts的服务中实现它?您是否在组件外部添加或删除项目?我在另一个组件中删除它们,该组件显示“提供”,该组件调用服务中的方法,因此列表是服务中的更改,但组件仍然显示“旧”列表,因为它不刷新谢谢,我现在理解了!很乐意帮忙;)
 subscription: Subscription;

 ngOnInit(): void {
       this.subscription =  this.offerService.getOffers().subscribe(offers => {
          //...
       })
 }