Я работаю в Angular и у меня есть компонент, который вызывает сервис. Служба служит для вызова API, но проблема в том, что мне приходится публиковать в API определенные параметры в зависимости от вкладки, которую просматривает пользователь. Таким образом, я могу получить активную вкладку в компоненте, но затем нужно передать ее службе, чтобы служба могла опубликовать с этим параметром.
service -> компонент
service <- component </p>
Довольно очевидная циклическая зависимость, но как ее исправить?
Вот как я хватаю вкладку, которую нужно передать моей наблюдаемой в service.ts
details.component.ts
tabChanged = (tabChangeEvent: MatTabChangeEvent): number => {
console.log("tabChangeEvent => ", tabChangeEvent);
console.log("index => ", tabChangeEvent.index);
return tabChangeEvent.index;
};
Это текущий файл структура
https://imgur.com/NwhkDeO
Я извлекаю активную вкладку из компонента внутри службы, сначала импортируя компонент в службу
import { DetailsComponent } from "./details/details.component";
и затем объявив его в моем конструкторе
constructor(private http: HttpClient, private details: DetailsComponent) {}
и, наконец, пытаюсь вытянуть информацию активной вкладки в мою наблюдаемую, чтобы заменить тот параметр "stati c", который у меня есть.
public getPunchDataToday(): Observable<any> {
let today: string | number | Date = new Date();
today = this.formatDate(today);
let tab = this.details.tabChanged;
return this.getPunchData("", "static", today, today);
}
Я получил это далеко, прежде чем пытаться сохранить и получить
WARNING in Circular dependency detected:
src\app\portal\dashboard\details\details.component.ts -> src\app\portal\dashboard\timerack.service.ts -> src\app\portal\dashboard\details\details.component.ts
Последнее, что я, вероятно, должен показать, это то, что я получаю все свои вкладки мат-вкладки из массива, который имеет объекты, которые определяют имя и идентификатор Я представляю имя на интерфейсе, но мне нужен идентификатор для вызова API.
<mat-tab-group #tabGroup (selectedTabChange)="tabChanged($event)">
<mat-tab
*ngFor="let tab of tabs; let i = index"
label="{{ this.tabs[i].name }}"
>