Я использую Rx js, и я хочу создать Observable из следующего шаблона (в порядке):
получить параметры из paramMap $, затем ...
на основе значения params, получить оба (getData (): Observable, getCategories (): Observables) вместе, затем ....
из ([данные, категории]) создать окончательный объект.
Код будет выглядеть так:
//route = this.ActivatedRoute
let obs$ = route.paramMap.pipe(
// combineLatest() is not a pipable operator, so it shouldn't be used inside .pipe()
// also it doesn't accept a function,
// but this just to show you what I want to do.
combineLatest(params=>getData(params.id), params=>getCategories(params.id)),
map(([data, categories])=>{
//do some changes...
return {data,categories}
}
)
)
также где лучше всего разместить поместите этот код в проект Angular:
constructor()
- не лучшая практика, потому что это длительная операция (на самом деле она должна выполнять запросы API)
ngOnInit()
не рекомендуется, потому что в какой-то момент мне нужно изменить this.params
, который используется в шаблоне
...
combineLatest(params=>
getData(params.id).pipe(
map(data=>{
this.params.type=data.type;
return data
})),
params=>getCategories(...)
)
в шаблоне :
<div>{{params.type}}</div>