Знатоки, в вопросе ничего сложного, но столкнулся с таким вот вопросом. Возможно так сделать нельзя и я зря ломаю голову, но все же.
Вот главный компонент
app.component.html
<div id="main-window">
<div class="nav-menu">
<app-menu></app-menu>
</div>
<div class="compnent-body" >
<router-outlet></router-outlet>
</div>
</div>
В нем есть компонент
app-menu, который вызывает меню и в этом меню есть возможность выбора даты. По событию
click вызывается функцию в которой вызывается сервис
memory.service.ts
memory.service.ts
iimport { Injectable, SimpleChanges } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';
import { DynamicMemory, Memory } from '../interface/memory';
@Injectable({
providedIn: 'root'
})
export class MemoryService {
// Память сохраненных данных
public memory: Memory = {
"token": '',
"fonts": []
};
private dynamicMemory:Subject<DynamicMemory> = new BehaviorSubject<DynamicMemory>({
"search_date": new Date()
});
constructor() { }
get getData$(){
return this.dynamicMemory;
}
setData$(data:DynamicMemory){
this.dynamicMemory.next(data);
}
}
В
dynamicMemory записывается объект с данными, на него создана подписка и если вызывать в других компонентах этот сервис
memory.service.ts с подпиской, то да, я получаю данные. Но вот как создать такую систему.
В компоненте
app-menu выбирается дата, записывается в сервис
memory.service.ts и другие компоненты опознают что было изменение в
memory.service.ts и вызывают функцию. Таким образом я хочу связать на изменение два компонента которые вызываются в разных местах но на одной странице так как компонент меню показывается на основной странице, а все остальные компоненты вызываются в зависимости то роута . Вот в чем вопрос. Через инпут и отпут я так понял
router-outlet не работает.
В принципе можно сделать через ngDoCheck, но, вообще прям НО, он вызывается на любое действие и загружать сайт нажатиям по итогу которое только 1 раз будет на изменение даты и вызовет функцию как то не очень. ПО этому и ищу способ более крутой, чтобы именно по изменению объекта, а лучше переменной в объекте вызывалась функция.