Общая служба - в этом случае go.
Служба, которая генерирует массив при каждом добавлении нового элемента:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class ArrayServiceService {
private acceptedArray = [];
public acceptedArraySubject = BehaviorSubject<string[]>([]);
addToAccepted(item: string) {
this.acceptedArray.push(item);
this.acceptedArraySubject.next(this.acceptedArray);
}
constructor() {}
}
Служба, которая вызывает Служба для добавления элемента (Конечно, вы можете получить свой элемент, зависит от вас, и я уверен, что вы знаете, как передать элемент с событием щелчка, поэтому я не показываю html):
import { Component, OnInit } from '@angular/core';
import { ArrayService } from '../array.service';
@Component({
selector: 'app-first-component',
templateUrl: './first-component.component.html',
styleUrls: ['./first-component.component.scss'],
})
export class FirstComponentComponent implements OnInit {
private allItemsArray = ['item1', 'item2', 'item3'];
markAsAccepted(item: string) {
this.arrayService.addToAccepted(item);
}
constructor(private arrayService: ArrayService) {}
ngOnInit(): void {}
}
И, наконец, второй компонент, который прослушивает изменения внутри службы и показывает принятый массив:
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { ArrayService } from '../array.service';
import { share } from 'rxjs/operators';
@Component({
selector: 'app-second-component',
templateUrl: './second-component.component.html',
styleUrls: ['./second-component.component.scss'],
})
export class SecondComponentComponent implements OnInit {
private acceptedArray: Observable<string[]>;
constructor(private arrayService: ArrayService) {
this.arrayService.acceptedArraySubject.pipe(share());
}
ngOnInit(): void {}
}
И потребляет канал в вашем html вашего второго компонента:
<ul>
<li *ngFor="let item of acceptedArray | async">{{item}}</li>
</ul>
Надеюсь, это помогло вам. Таким образом, у вас есть сервис, который содержит нужный вам массив, компонент, который его меняет, и другой, который его слушает. Но у вас может быть много компонентов, слушающих или изменяющих его ..