Я создал свою трубу и сервис. Массив языковых сокращений отправляется в pipe, затем pipe вызывает функции с сайта. Это то, что он передает в качестве параметра pipe = ["be", "bg", "cs", "da", "de", "el", "en"]
это труба
transform(value: any[], kind: string): Observable<string | any>{
this.customTranslateService.getSortedTranslation(value, kind).subscribe(val => console.log("pipe", val));
return this.customTranslateService.getSortedTranslation(value, kind);
}
это мой сервис
getSortedTranslation(value: any[], kind: string): Observable<string | any> {
return this.translateService.get(value.map(lang => `gen.glo.lang.${lang}`))
.pipe(
switchMap(result => of(Object.entries(result).sort((a, b) => (a > b) ? 1 : -1).reduce((object, [k, v]) => {
object['key']=k.split(".").pop();
object['value']=v;
return object;
}, {}))),
);
}
это возвращаемый объект: {key: "en", value: "English"}
К сожалению, весь код не работает должным образом. Мой сервис возвращает только последний элемент. Таким образом, приложение возвращает ошибку:
LanguageSelectionDialogComponent.html:15 ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
Если я выполняю console.log
в конвейере, оно печатает весь объект по очереди со всеми элементами, к сожалению, только последний из них попадает в pip и html-файл. У меня есть просьба о помощи в поиске причины этой проблемы и пример решения.