Как я знаю, вы упомянули все 2 способа связи между компонентами.Также вы можете использовать параметры маршрутизатора.если вы используете маршрутизацию.Но ваших ограничений второго аргумента можно избежать.
2.создание службы с помощью метода получения и установки (но ограничение заключается в том, что если мы обновим страницу, на которой мы используем данные из службы, данные станут пустыми)
Чтобы не сбрасывать данные после обновления дочернего элемента, вы можете использовать BehaviorSubject для передачи данных.когда вы обновляете, он отправляет последние сохраненные данные.
это способ сделать это,
В вашем сервисе сначала импортируйте BehaviorSubject
import { BehaviorSubject } from "rxjs/BehaviorSubject";
затем внутри класса обслуживания
behaviralSubject = new BehaviorSubject<any[]>(['']);
exampleBehaviralSubject = this.behaviralSubject.asObservable();
setValues(val: any[]) {
this.behaviralSubject.next(val);
}
И в компоненте, на который вы хотите подписаться на эту услугу,
сначала внедрите компоненты в OnInit, импортируйте ваш сервис как testService
затем переопределите ngOnInit ()
ngOnInit() {
testServce.exampleBehaviralSubject.subcribe(
dataArray => {
console.log(dataArray)
// your code goes here
}
)
}
ваше первое значение будет [''] пустым массивом String.затем используйте testService.setValues (dataArray) для отправки данных.это отправит данные всем компонентам, которые подписаны на testService, при инициализации (или обновлении) компонента будут отправлены последние данные в высоком уровне поведения.