Если вы не хотите использовать метод map
для массива, а только для операторов RxJS, вы можете использовать тот факт, что mergeMap
требует в качестве параметра функции, которая возвращает ObservableInput
, и что массив является ObservableInput
.
В этом случае mergeMap
делает выравнивание массива и испускание его отдельных элементов (mergeMap
также известен как flatMap
).
В конце, так как вам нужен массив, который будет выдан this.myObservable$
, вы можете использовать оператор toArray
.
код выглядит так
this.myObservable$ = of(json).pipe(
mergeMap(data => data),
map((navigation) => {
return <INavigation> {
Id: navigation.Id,
AppId: navigation.NavAppId,
NavId: navigation.NavId,
Name: navigation.NavName,
ParentId: navigation.NavParentId,
PageURL: navigation.NavPageURL,
Position: navigation.NavPosition,
Active: navigation.NavActive,
Desktop: navigation.NavDesktop,
Tablet: navigation.NavTablet,
Phone: navigation.NavPhone,
RoleId: navigation.NavRoleId,
Target: navigation.NavTarget
}
}),
toArray()
)
Честно говоря, ваше оригинальное решение с методом Array map
выглядит проще и экономнее.