Example 1: Get All Query Parameters
Get all query parameters as a signal:
import {injectQueryParams} from 'ngx-lift';
export class MyComponent {
// Returns a signal with all query parameters
allQueryParams = injectQueryParams();
} The injectQueryParams function is a helper that enables us to inject query parameters from the current route as a signal. Utilizing query parameters as a signal is beneficial in a modern Angular signals-based architecture. It supports getting all query parameters, a specific parameter, transforming parameters, and providing initial values.
Get all query parameters as a signal:
import {injectQueryParams} from 'ngx-lift';
export class MyComponent {
// Returns a signal with all query parameters
allQueryParams = injectQueryParams();
}Get a specific query parameter by name:
import {injectQueryParams} from 'ngx-lift';
import {Signal} from '@angular/core';
export class MyComponent {
// Returns a signal with the value of the "page" query parameter
page: Signal<string | null> = injectQueryParams('page');
}Transform query parameters using a transform function:
import {injectQueryParams} from 'ngx-lift';
export class MyComponent {
// Returns a signal with all keys of the query params
queryParamsKeys = injectQueryParams((params) => Object.keys(params));
}Transform query parameters with an initial value and type conversion:
import {injectQueryParams} from 'ngx-lift';
import {numberAttribute, Signal} from '@angular/core';
export class MyComponent {
// Returns a signal with "search" querystring, convert to number, initial value is 3
searchParam: Signal<number> = injectQueryParams('search', {
initialValue: 3,
transform: numberAttribute,
});
}Complete example showing various usage patterns:
import {injectQueryParams, computedAsync} from 'ngx-lift';
import {computed} from '@angular/core';
import {numberAttribute, Signal} from '@angular/core';
export class SearchComponent {
private userService = inject(UserService);
// Get all query params
allQueryParams = injectQueryParams();
// Transform with initial value
searchParam: Signal<number> = injectQueryParams('search', {
initialValue: 3,
transform: numberAttribute,
});
// Get single param with transform
pageNumber: Signal<number | null> = injectQueryParams('page', {
transform: numberAttribute,
});
// Use with computedAsync to fetch data when param changes
users = computedAsync(() => this.userService.getUsers({results: this.searchParam()}));
// Use with computed
multipliedNumber = computed(() => (this.pageNumber() || 0) * 2);
}Injects and transforms route query parameters as reactive signals.
injectQueryParams(): Signal<Params>
injectQueryParams(key: string): Signal<string | null>
injectQueryParams<T>(key: string, options: InjectQueryParamsOptions<T>): Signal<T>
injectQueryParams<T>(transform: (params: Params) => T): Signal<T>
injectQueryParams<T>(transform: (params: Params) => T, options: InjectQueryParamsOptions<T>): Signal<T>keyOrTransform?: string | ((params: Params) => T)(Optional) When a string is provided, returns the value of that query parameter. When a function is provided, it's used as a transform function to process all query parameters.
If omitted, returns a signal containing all query parameters of the current route.
options?: InjectQueryParamsOptions<T>(Optional) Configuration object containing transform function and/or initialValue.
If initialValue is a boolean or number, transform function must be provided to convert the string parameter to the correct type.
A signal containing the query parameter value(s) or transformed result.