У меня есть функция (buildOrganization
), которая обновляет мой график в пользовательском интерфейсе.
Он работает с точно такой же структурой данных, которую я сейчас пытаюсь пропустить (данные, с которыми он работает,updatedGraphTable
)
Попытка использовать его как я во второй раз выдает ошибку (в функции getSubsidiaryEngagements
)
TypeError: Аргументами path.resolve должны быть строки
Оба набора данных принимаются после вызова конечной точки и представляют собой ответ JSON - массив объектов формата.{ {[ {[ ]} ]} }
вот так.
Вот мой код:
Функция для обновления кода (графического файла):
buildOrganization(root, resolve): void {
if (root) {
this.organization.clear();
this.organization.setProperties(root, this.filterParams);
this.focus = this.organization;
if (this.userList.length === 0) {
this.userList = this.organization.individuals;
}
this.reload = false;
this.data();
resolve(true);
}
}
Использование функции при работе (передача *)1022 * через него - который имеет ту же структуру данных, что и мои другие данные - массив объектов (они получены из одной и той же конечной точки):
graph(id: string): Promise < boolean > {
if (this.organization.id && this.organization.id !== id) {
this.organization = new EngagementRoot();
this.resetGraph();
}
this.organization.setValues(id);
return new Promise((resolve, reject) => {
if (!this.reload) {
resolve(false);
} else {
let areasLoaded = false;
let root: IEngagementGraphNode;
Observable.zip(this.organizationEngagements(id, this.requestOptions()), this.organizationIndividuals(id, this.requestOptions()))
.subscribe(([updatedGraphTable, individualsData]) => {
if (areasLoaded) {
console.log('updated graph table!' + JSON.stringify(updatedGraphTable))
return this.buildOrganization(updatedGraphTable, resolve);
} else {
root = updatedGraphTable;
}
}, error => reject(error));
}
});
}
Теперь эта функция не работаетЯ включил его за пределы этой графической функции, так как хочу, чтобы он вызывался только при вызове его из другого файла, который я покажу (поэтому данные вводятся таким же образом, как updatedGraphTable
было:
getSubsidiaryEngagements(subId, resolve) {
return this.subsidiariesEngagements(subId)
.subscribe(data => {
console.log('subsidiary engagements' + JSON.stringify(data));
return this.buildOrganization(data, resolve); < --error!
})
}
Затем в моем другом файле я пытаюсь вызвать эту новую функцию:
updateSub(data) {
this.engagementService.getSubsidiaryEngagements(this.subId, resolve)
}
Но прежде чем я даже могу вызвать ее, я получаю эту ошибку в консоли, когда страница сначала загружается, прежде чем ядаже вызывает функцию, но она также показывает, когда я вызываю ее:
TypeError: Аргументами path.resolve должны быть строки
в webpackJsonp ... / .. / .. / .. /path-browserify / index.js.exports.resolve
Я уверен, что я глупый и пропалчто-то очевидное?