Как обрабатывать несколько queryParams в Angular2

Я пытаюсь реализовать механизм фильтрации в новом приложении Angular2, который позволил бы мне отфильтровать список записей в массиве. Записи могут иметь около 20 свойств, по которым можно фильтровать. До сих пор я создал список фильтров в одном компоненте, а затем компонент списка, который направляется как дочерний. Затем я планировал передать фильтры как queryParams через маршрутизатор. Начиная с одного фильтра, это было нормально:

На стороне отправки у меня было:

this.router.navigate(['/findlist'], {queryParams: {'g': myParam}});

На приемной стороне у меня было:

this.subscription = this.route.queryParams.subscribe(
  (queryParam: any) => this.myFilter = queryParam['g']
);

Затем я передаю myFilter в трубу фильтра для сопоставления и фильтрации. Пока все в порядке.

Тем не менее, я не могу понять, как увеличить это, чтобы учесть несколько потенциальных параметров, большинство из которых были бы пустыми / не нужны.

Я могу себе представить, что мне нужно было бы определить массив, содержащий ВСЕ активные фильтры через queryParam, но единственная документация, которую я могу найти, только когда-либо показывает примеры только с одним переданным параметром. Я пытался поиграть с:

{queryParams: { pass an array here! }}

Но моя среда IDE регистрирует ошибку, если я помещаю что-либо, кроме пары ключ: значение.

Я мог бы просто добавить все возможные фильтры и их значения каждый раз, но это каждый раз создавало бы тупо длинную строку URL, с большинством значений пустыми или Все и т. Д., Не очень красивыми.

Поэтому я считаю, что мой рабочий процесс должен состоять в том, чтобы на стороне отправки я поддерживал массив всех фильтров и их состояний, а затем каждый раз, когда нажималась одна из кнопок фильтров, я сначала обновлял соответствующее значение в массиве, а затем передавал весь массив. через queryParams.

На приемной стороне мне нужно как-то получить и обработать Param как массив, а затем извлечь каждую запись как переменную для последующей обработки в фильтре. Я также хочу быть СУХИМЫМ, поэтому на самом деле не хочу, чтобы несколько операторов на стороне приема эффективно делали одно и то же для разных свойств, упрощенно вместо этого имеет смысл циклически перемещаться по массиву.

Я надеюсь, что это имеет смысл, я был бы признателен, если у кого-нибудь есть предложение, даже если это означает передачу данных другим способом. Например, сейчас я смотрю, могу ли я просто передать данные, создав отдельную службу фильтрации и передав ее с помощью @Input.

Любые идеи с благодарностью приняты (самоучка-любитель, поэтому, вероятно, упускает что-то очевидное!)

Спасибо

Тони

Ответы на вопрос(2)

Ваш ответ на вопрос