Я хочу иметь возможность вызывать функцию из моего filterComponent (компонента) внутри моего engagementService (службы)
Функция в моем filterComponent обращается к массиву, который находится в engagementService - он использует данные этого массивадобавить в переключатель в его HTML-шаблон.
Он успешно обращается к массиву, поскольку я включаю engagementService в конструктор filterComponents (я протестировал его с помощью функции щелчка, но функционально это не работает, так как мне нужно радиокнопка, чтобы иметь имена после загрузки).
Данные этого массива заполняются после загрузки моей главной страницы, поскольку данные извлекаются из конечной точки, которая находится в engagementService, поэтому я хочу вызывать эту функцию только после загрузки графика (асинхронно), функции графиканаходится в engagementService, а также в другом коде, где я мог бы эффективно вызывать эту функцию из моего filterComponent после заполнения массива данными, и, следовательно, он будет работать.
Я, вероятно, сделал это не лучшим образомтак как у меня есть массив в engagementService, который заполняется данными из конечной точки, а затем я хочу вызвать функцию из filterComponent в engagementService, который использует массив.
Таким образом, данные идут в одну сторону, но неДругой.У меня есть второй компонент, где я мог бы также вызвать функцию, так как я вызываю функцию графа внутри, но у меня тоже была такая же проблема.
Если я добавляю класс компонента в конструктор, я получаю 'Не удается разрешить все параметры для EngagementService: ([объект объекта],?).'
Если я просто включу класс какпеременная, с которой он не работает* Мой сервис: (если я включаю engagementFilter в конструктор или даже просто вызываю класс внутри класса, который система просто не загружает, и в конструкторе выдает ошибку «невозможно разрешить параметры объекта в конструкторе engagementService».
Getordsubsiaries создают массив имен, который затем сохраняется в orgSubSidNames, который вызывается в функции компонентов ... это работает! Но, конечно, мне нужно вызывать эту функцию асинхронно, так как имена извлекаются конечной точкой.
@Injectable()
export class EngagementService {
public orgSubSidIds = [];
public graphParams: IGraphParams = {
}
constructor(private http: WefHttp) {
this.baseURL = `${environment.ews_api_host}/${ENDPOINTS.api}`;
this.organization = this.focus = new EngagementRoot();
}
getOrgSubsidiaries(id) {
return this.organizationSubsidiaries(id)
.subscribe(data => {
console.log('subsidiaries data' + JSON.stringify(data));
let subsidiaryNames = []
data.forEach(sub => {
subsidiaryNames.push(sub.SubsidiaryName)
})
subsidiaryNames = subsidiaryNames.filter(this.onlyUnique);
this.orgSubSidNames = subsidiaryNames;
});
}
Этот getOrgSubsidiaries является callредактируется при первой загрузке системы.