Я пытаюсь загрузить отделы с сервера и заполнить раскрывающийся список.Если присутствует routeParam (dep), я бы хотел установить formControl (департамент) для целевого элемента.
Вложенные операторы pipe кажутся мне немного странными, но я все еще относительно новичок в RxJS.Есть ли лучший способ написать оператор присваивания для отдел $ ?
public form: FormGroup;
public departments$: Observable<Department[]>;
constructor(
private route: ActivatedRoute,
private departmentService: DepartmentService) {}
get department() {
return this.form.get('department') as FormControl;
}
ngOnInit() {
this.form = new FormGroup({
department: new FormControl('', Validators.required)
});
this.departments$ = this.route.paramMap.pipe(
switchMap(
(params: ParamMap) => {
return this.departmentService.getDepartments().pipe(
tap(departments => {
if (params.has('dep') && departments && departments.length) {
this.department.setValue(departments.find(dep => dep.id === +params.get('dep')));
}
})
);
}
)
);
}