나는 observables를 사용하여 다른 구성 요소와 통신하는 Angular 2/4 서비스를 가지고 있습니다.앵귤러 서비스가 가입 된 구성 요소를 업데이트하지 않음
서비스 :
let EVENTS = [
{
event: 'foo',
timestamp: 1512205360
},
{
event: 'bar',
timestamp: 1511208360
}
];
@Injectable()
export class EventsService {
subject = new BehaviorSubject<any>(EVENTS);
getEvents(): Observable<any> {
return this.subject.asObservable();
}
deleteEvent(deletedEvent) {
EVENTS = EVENTS.filter((event) => event.timestamp != deletedEvent.timestamp);
this.subject.next(EVENTS);
}
search(searchTerm) {
const newEvents = EVENTS.filter((obj) => obj.event.includes(searchTerm));
this.subject.next(newEvents);
}
}
내 home
구성 요소는이 서비스에 가입 할 수 있으며, 올바르게 이벤트가 삭제 될 때 업데이트 :
export class HomeComponent {
events;
subscription: Subscription;
constructor(private eventsService: EventsService) {
this.subscription = this.eventsService.getEvents().subscribe(events => this.events = events);
}
deleteEvent = (event) => {
this.eventsService.deleteEvent(event);
}
}
내가도를 표시하는 루트 구성 요소가 검색 양식. 양식이 제출되면 검색을 수행하는 서비스를 호출하고 this.subject.next
을 호출합니다 (위 참조). 그러나 이러한 결과는 home
구성 요소에 반영되지 않습니다. 내가 어디로 잘못 가고 있니? 전체 코드는 plnkr.co/edit/V5AndArFWy7erX2WIL7N을 참조하십시오.