У меня есть приложение, в котором мне нужно было сохранить состояние формы фильтра в строке URL.
Вы можете увидеть реализацию здесь
Хотяизменяя значение формы, я хочу установить его как состояние URL, но this.router.navigation([], { queryParams })
испускает событие, которое там не нужно.
data$ = merge(
this.router.events.pipe(
filter((e: NavigationEnd) => e instanceof NavigationEnd),
map(({ url }: NavigationEnd) => {
const { queryParams } = this.router.parseUrl(url);
if (queryParams['completed']) {
queryParams['completed'] = queryParams['completed'] === 'true';
}
this.form.patchValue(queryParams, { emitEvent: false });
return queryParams;
}),
),
this.form.valueChanges.pipe(
debounceTime(200),
tap((queryParams: Task) => {
this.router.navigate([], { queryParams })
})
)
).pipe(
switchMap((query?: Task) => this.getData(query))
);
Возможно ли как-то предотвратить отправку события навигации?
Нужно что-то похожее с this.form.patchValue(queryParams, { emitEvent: false });