@this-dot/route-config
Version:
A library containing directives and services for configuring components via Route's routeData property
51 lines (50 loc) • 2.52 kB
TypeScript
import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export type RouteConfigParams<RouteTags extends string = string> = {
routeTags: RouteTags | RouteTags[];
};
export type RouteConfigParamNames = keyof RouteConfigParams;
export type RouteData<ConfigParamsNames extends string = never, RouteTags extends string = string> = {
[key in ConfigParamsNames]: unknown;
} & RouteConfigParams<RouteTags>;
export type RouteDataParam<ConfigParamsNames extends string> = keyof RouteData<ConfigParamsNames>;
export declare class RouteConfigService<RouteTags extends string = string, ConfigParamsNames extends string = never> {
private activatedRoute;
private router;
private _injectedDefaultValue?;
private get injectedDefaultValue();
constructor(activatedRoute: ActivatedRoute, router: Router, _injectedDefaultValue?: Partial<RouteData<ConfigParamsNames, RouteTags>> | undefined);
/**
* Returns an Observable which emits the route config set for the activated route.
*
* @example
* export class AppComponent {
* data$ = this.routeConfigService.getActivatedRouteConfig();
* dataWithDefaultValue$ = this.routeConfigService.getActivatedRouteConfig({
* routeTags: ['defaultTag'],
* title: 'Default Title',
* });
* }
*
* @param defaultValue - the default value that should be returned, it allows overriding the injected default values.
*
* @returns Observable<Partial<C>>
*/
getActivatedRouteConfig<C extends RouteData<ConfigParamsNames, RouteTags> = RouteData<ConfigParamsNames, RouteTags>>(defaultValue?: Partial<C>): Observable<Partial<C>>;
/**
* Returnsthe an Observable with current route's property value
*
* @example
* export class AppComponent {
* tags$ = this.routeConfigService.getLeafConfig('routeTags', ['no tags']);
* }
*
* @param paramName - the parameter name from the route config to be returned
* @param defaultValue - the default value that should be returned, if the value is not present
*/
getLeafConfig(paramName: 'routeTags', defaultValue?: RouteTags[]): Observable<RouteTags[]>;
getLeafConfig<T>(paramName: ConfigParamsNames, defaultValue?: T): Observable<T>;
static ɵfac: i0.ɵɵFactoryDeclaration<RouteConfigService<any, any>, [null, null, { optional: true; }]>;
static ɵprov: i0.ɵɵInjectableDeclaration<RouteConfigService<any, any>>;
}