/** * @license Angular v9.0.2 * (c) 2010-2020 Google LLC. https://angular.io/ * License: MIT */ import { Observable } from 'rxjs'; import { Subject } from 'rxjs'; import { Subscription } from 'rxjs'; /** * @description * * Represents an abstract class `T`, if applied to a concrete class it would stop being * instantiatable. * * @publicApi */ import * as ɵngcc0 from './src/r3_symbols'; export declare interface AbstractType<T> extends Function { prototype: T; } /** * Below are constants for LContainer indices to help us look up LContainer members * without having to remember the specific indices. * Uglify will inline these when minifying so there shouldn't be a cost. */ declare const ACTIVE_INDEX = 2; /** * Used to track: * - Inline embedded views (see: `ɵɵembeddedViewStart`) * - Transplanted `LView`s (see: `LView[DECLARATION_COMPONENT_VIEW])` */ declare const enum ActiveIndexFlag { /** * Flag which signifies that the `LContainer` does not have any inline embedded views. */ DYNAMIC_EMBEDDED_VIEWS_ONLY = -1, /** * Flag to signify that this `LContainer` may have transplanted views which need to be change * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`. * * This flag once set is never unset for the `LContainer`. This means that when unset we can skip * a lot of work in `refreshDynamicEmbeddedViews`. But when set we still need to verify * that the `MOVED_VIEWS` are transplanted and on-push. */ HAS_TRANSPLANTED_VIEWS = 1, /** * Number of bits to shift inline embedded views counter to make space for other flags. */ SHIFT = 1, /** * When incrementing the active index for inline embedded views, the amount to increment to leave * space for other flags. */ INCREMENT = 2 } /** * @description * A lifecycle hook that is called after the default change detector has * completed checking all content of a directive. * * @see `AfterViewChecked` * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface to * define its own after-check functionality. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentChecked'} * * @publicApi */ export declare interface AfterContentChecked { /** * A callback method that is invoked immediately after the * default change detector has completed checking all of the directive's * content. */ ngAfterContentChecked(): void; } /** * @description * A lifecycle hook that is called after Angular has fully initialized * all content of a directive. * Define an `ngAfterContentInit()` method to handle any additional initialization tasks. * * @see `OnInit` * @see `AfterViewInit` * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface to * define its own content initialization method. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentInit'} * * @publicApi */ export declare interface AfterContentInit { /** * A callback method that is invoked immediately after * Angular has completed initialization of all of the directive's * content. * It is invoked only once when the directive is instantiated. */ ngAfterContentInit(): void; } /** * @description * A lifecycle hook that is called after the default change detector has * completed checking a component's view for changes. * * @see `AfterContentChecked` * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface to * define its own after-check functionality. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewChecked'} * * @publicApi */ export declare interface AfterViewChecked { /** * A callback method that is invoked immediately after the * default change detector has completed one change-check cycle * for a component's view. */ ngAfterViewChecked(): void; } /** * @description * A lifecycle hook that is called after Angular has fully initialized * a component's view. * Define an `ngAfterViewInit()` method to handle any additional initialization tasks. * * @see `OnInit` * @see `AfterContentInit` * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface to * define its own view initialization method. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewInit'} * * @publicApi */ export declare interface AfterViewInit { /** * A callback method that is invoked immediately after * Angular has completed initialization of a component's view. * It is invoked only once when the view is instantiated. * */ ngAfterViewInit(): void; } /** * A DI token that you can use to create a virtual [provider](guide/glossary#provider) * that will populate the `entryComponents` field of components and NgModules * based on its `useValue` property value. * All components that are referenced in the `useValue` value (either directly * or in a nested array or map) are added to the `entryComponents` property. * * @usageNotes * * The following example shows how the router can populate the `entryComponents` * field of an NgModule based on a router configuration that refers * to components. * * ```typescript * // helper function inside the router * function provideRoutes(routes) { * return [ * {provide: ROUTES, useValue: routes}, * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true} * ]; * } * * // user code * let routes = [ * {path: '/root', component: RootComp}, * {path: '/teams', component: TeamsComp} * ]; * * @NgModule({ * providers: [provideRoutes(routes)] * }) * class ModuleWithRoutes {} * ``` * * @publicApi * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary. */ export declare const ANALYZE_FOR_ENTRY_COMPONENTS: InjectionToken<any>; /** * All callbacks provided via this token will be called for every component that is bootstrapped. * Signature of the callback: * * `(componentRef: ComponentRef) => void`. * * @publicApi */ export declare const APP_BOOTSTRAP_LISTENER: InjectionToken<((compRef: ComponentRef<any>) => void)[]>; /** * A DI Token representing a unique string id assigned to the application by Angular and used * primarily for prefixing application attributes and CSS styles when * {@link ViewEncapsulation#Emulated ViewEncapsulation.Emulated} is being used. * * If you need to avoid randomly generated value to be used as an application id, you can provide * a custom value via a DI provider <!-- TODO: provider --> configuring the root {@link Injector} * using this token. * @publicApi */ export declare const APP_ID: InjectionToken<string>; /** * An injection token that allows you to provide one or more initialization functions. * These function are injected at application startup and executed during * app initialization. If any of these functions returns a Promise, initialization * does not complete until the Promise is resolved. * * You can, for example, create a factory function that loads language data * or an external configuration, and provide that function to the `APP_INITIALIZER` token. * That way, the function is executed during the application bootstrap process, * and the needed data is available on startup. * * @publicApi */ export declare const APP_INITIALIZER: InjectionToken<(() => void)[]>; /** * A class that reflects the state of running {@link APP_INITIALIZER}s. * * @publicApi */ export declare class ApplicationInitStatus { private appInits; private resolve; private reject; private initialized; readonly donePromise: Promise<any>; readonly done = false; constructor(appInits: (() => any)[]); static ɵfac: ɵngcc0.ɵɵFactoryDef<ApplicationInitStatus>; static ɵprov: ɵngcc0.ɵɵInjectableDef<ApplicationInitStatus>; } /** * Configures the root injector for an app with * providers of `@angular/core` dependencies that `ApplicationRef` needs * to bootstrap components. * * Re-exported by `BrowserModule`, which is included automatically in the root * `AppModule` when you create a new app with the CLI `new` command. * * @publicApi */ export declare class ApplicationModule { constructor(appRef: ApplicationRef); static ɵmod: ɵngcc0.ɵɵNgModuleDefWithMeta<ApplicationModule, never, never, never>; static ɵinj: ɵngcc0.ɵɵInjectorDef<ApplicationModule>; } /** * A reference to an Angular application running on a page. * * @usageNotes * * {@a is-stable-examples} * ### isStable examples and caveats * * Note two important points about `isStable`, demonstrated in the examples below: * - the application will never be stable if you start any kind * of recurrent asynchronous task when the application starts * (for example for a polling process, started with a `setInterval`, a `setTimeout` * or using RxJS operators like `interval`); * - the `isStable` Observable runs outside of the Angular zone. * * Let's imagine that you start a recurrent task * (here incrementing a counter, using RxJS `interval`), * and at the same time subscribe to `isStable`. * * ``` * constructor(appRef: ApplicationRef) { * appRef.isStable.pipe( * filter(stable => stable) * ).subscribe(() => console.log('App is stable now'); * interval(1000).subscribe(counter => console.log(counter)); * } * ``` * In this example, `isStable` will never emit `true`, * and the trace "App is stable now" will never get logged. * * If you want to execute something when the app is stable, * you have to wait for the application to be stable * before starting your polling process. * * ``` * constructor(appRef: ApplicationRef) { * appRef.isStable.pipe( * first(stable => stable), * tap(stable => console.log('App is stable now')), * switchMap(() => interval(1000)) * ).subscribe(counter => console.log(counter)); * } * ``` * In this example, the trace "App is stable now" will be logged * and then the counter starts incrementing every second. * * Note also that this Observable runs outside of the Angular zone, * which means that the code in the subscription * to this Observable will not trigger the change detection. * * Let's imagine that instead of logging the counter value, * you update a field of your component * and display it in its template. * * ``` * constructor(appRef: ApplicationRef) { * appRef.isStable.pipe( * first(stable => stable), * switchMap(() => interval(1000)) * ).subscribe(counter => this.value = counter); * } * ``` * As the `isStable` Observable runs outside the zone, * the `value` field will be updated properly, * but the template will not be refreshed! * * You'll have to manually trigger the change detection to update the template. * * ``` * constructor(appRef: ApplicationRef, cd: ChangeDetectorRef) { * appRef.isStable.pipe( * first(stable => stable), * switchMap(() => interval(1000)) * ).subscribe(counter => { * this.value = counter; * cd.detectChanges(); * }); * } * ``` * * Or make the subscription callback run inside the zone. * * ``` * constructor(appRef: ApplicationRef, zone: NgZone) { * appRef.isStable.pipe( * first(stable => stable), * switchMap(() => interval(1000)) * ).subscribe(counter => zone.run(() => this.value = counter)); * } * ``` * * @publicApi */ export declare class ApplicationRef { private _zone; private _console; private _injector; private _exceptionHandler; private _componentFactoryResolver; private _initStatus; private _views; private _runningTick; private _enforceNoNewChanges; private _stable; /** * Get a list of component types registered to this application. * This list is populated even before the component is created. */ readonly componentTypes: Type<any>[]; /** * Get a list of components registered to this application. */ readonly components: ComponentRef<any>[]; /** * Returns an Observable that indicates when the application is stable or unstable. * * @see [Usage notes](#is-stable-examples) for examples and caveats when using this API. */ readonly isStable: Observable<boolean>; /** * Bootstrap a new component at the root level of the application. * * @usageNotes * ### Bootstrap process * * When bootstrapping a new root component into an application, Angular mounts the * specified application component onto DOM elements identified by the componentType's * selector and kicks off automatic change detection to finish initializing the component. * * Optionally, a component can be mounted onto a DOM element that does not match the * componentType's selector. * * ### Example * {@example core/ts/platform/platform.ts region='longform'} */ bootstrap<C>(componentOrFactory: ComponentFactory<C> | Type<C>, rootSelectorOrNode?: string | any): ComponentRef<C>; /** * Invoke this method to explicitly process change detection and its side-effects. * * In development mode, `tick()` also performs a second change detection cycle to ensure that no * further changes are detected. If additional changes are picked up during this second cycle, * bindings in the app have side-effects that cannot be resolved in a single change detection * pass. * In this case, Angular throws an error, since an Angular application can only have one change * detection pass during which all change detection must complete. */ tick(): void; /** * Attaches a view so that it will be dirty checked. * The view will be automatically detached when it is destroyed. * This will throw if the view is already attached to a ViewContainer. */ attachView(viewRef: ViewRef): void; /** * Detaches a view from dirty checking again. */ detachView(viewRef: ViewRef): void; private _loadComponent; private _unloadComponent; /** * Returns the number of attached views. */ get viewCount(): number; static ɵfac: ɵngcc0.ɵɵFactoryDef<ApplicationRef>; static ɵprov: ɵngcc0.ɵɵInjectableDef<ApplicationRef>; } /** * @publicApi */ export declare function asNativeElements(debugEls: DebugElement[]): any; /** * Checks that there currently is a platform which contains the given token as a provider. * * @publicApi */ export declare function assertPlatform(requiredToken: any): PlatformRef; /** * Type of the Attribute metadata. * * @publicApi */ export declare interface Attribute { /** * The name of the attribute whose value can be injected. */ attributeName?: string; } /** * Attribute decorator and metadata. * * @Annotation * @publicApi */ export declare const Attribute: AttributeDecorator; /** * Type of the Attribute decorator / constructor function. * * @publicApi */ export declare interface AttributeDecorator { /** * Parameter decorator for a directive constructor that designates * a host-element attribute whose value is injected as a constant string literal. * * @usageNotes * * Suppose we have an `<input>` element and want to know its `type`. * * ```html * <input type="text"> * ``` * * The following example uses the decorator to inject the string literal `text`. * * {@example core/ts/metadata/metadata.ts region='attributeMetadata'} * * ### Example as TypeScript Decorator * * {@example core/ts/metadata/metadata.ts region='attributeFactory'} * */ (name: string): any; new (name: string): Attribute; } declare interface BindingDef { flags: ɵBindingFlags; ns: string | null; name: string | null; nonMinifiedName: string | null; securityContext: SecurityContext | null; suffix: string | null; } /** * Provides additional options to the bootstraping process. * * */ declare interface BootstrapOptions { /** * Optionally specify which `NgZone` should be used. * * - Provide your own `NgZone` instance. * - `zone.js` - Use default `NgZone` which requires `Zone.js`. * - `noop` - Use `NoopNgZone` which does nothing. */ ngZone?: NgZone | 'zone.js' | 'noop'; /** * Optionally specify coalescing event change detections or not. * Consider the following case. * * <div (click)="doSomething()"> * <button (click)="doSomethingElse()"></button> * </div> * * When button is clicked, because of the event bubbling, both * event handlers will be called and 2 change detections will be * triggered. We can colesce such kind of events to only trigger * change detection only once. * * By default, this option will be false. So the events will not be * coalesced and the change detection will be triggered multiple times. * And if this option be set to true, the change detection will be * triggered async by scheduling a animation frame. So in the case above, * the change detection will only be trigged once. */ ngZoneEventCoalescing?: boolean; } /** * The strategy that the default change detector uses to detect changes. * When set, takes effect the next time change detection is triggered. * * @publicApi */ export declare enum ChangeDetectionStrategy { /** * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated * until reactivated by setting the strategy to `Default` (`CheckAlways`). * Change detection can still be explicitly invoked. * This strategy applies to all child directives and cannot be overridden. */ OnPush = 0, /** * Use the default `CheckAlways` strategy, in which change detection is automatic until * explicitly deactivated. */ Default = 1 } /** * Base class for Angular Views, provides change detection functionality. * A change-detection tree collects all views that are to be checked for changes. * Use the methods to add and remove views from the tree, initiate change-detection, * and explicitly mark views as _dirty_, meaning that they have changed and need to be rerendered. * * @usageNotes * * The following examples demonstrate how to modify default change-detection behavior * to perform explicit detection when needed. * * ### Use `markForCheck()` with `CheckOnce` strategy * * The following example sets the `OnPush` change-detection strategy for a component * (`CheckOnce`, rather than the default `CheckAlways`), then forces a second check * after an interval. See [live demo](http://plnkr.co/edit/GC512b?p=preview). * * <code-example path="core/ts/change_detect/change-detection.ts" * region="mark-for-check"></code-example> * * ### Detach change detector to limit how often check occurs * * The following example defines a component with a large list of read-only data * that is expected to change constantly, many times per second. * To improve performance, we want to check and update the list * less often than the changes actually occur. To do that, we detach * the component's change detector and perform an explicit local check every five seconds. * * <code-example path="core/ts/change_detect/change-detection.ts" region="detach"></code-example> * * * ### Reattaching a detached component * * The following example creates a component displaying live data. * The component detaches its change detector from the main change detector tree * when the `live` property is set to false, and reattaches it when the property * becomes true. * * <code-example path="core/ts/change_detect/change-detection.ts" region="reattach"></code-example> * * @publicApi */ export declare abstract class ChangeDetectorRef { /** * When a view uses the {@link ChangeDetectionStrategy#OnPush OnPush} (checkOnce) * change detection strategy, explicitly marks the view as changed so that * it can be checked again. * * Components are normally marked as dirty (in need of rerendering) when inputs * have changed or events have fired in the view. Call this method to ensure that * a component is checked even if these triggers have not occured. * * <!-- TODO: Add a link to a chapter on OnPush components --> * */ abstract markForCheck(): void; /** * Detaches this view from the change-detection tree. * A detached view is not checked until it is reattached. * Use in combination with `detectChanges()` to implement local change detection checks. * * Detached views are not checked during change detection runs until they are * re-attached, even if they are marked as dirty. * * <!-- TODO: Add a link to a chapter on detach/reattach/local digest --> * <!-- TODO: Add a live demo once ref.detectChanges is merged into master --> * */ abstract detach(): void; /** * Checks this view and its children. Use in combination with {@link ChangeDetectorRef#detach * detach} * to implement local change detection checks. * * <!-- TODO: Add a link to a chapter on detach/reattach/local digest --> * <!-- TODO: Add a live demo once ref.detectChanges is merged into master --> * */ abstract detectChanges(): void; /** * Checks the change detector and its children, and throws if any changes are detected. * * Use in development mode to verify that running change detection doesn't introduce * other changes. */ abstract checkNoChanges(): void; /** * Re-attaches the previously detached view to the change detection tree. * Views are attached to the tree by default. * * <!-- TODO: Add a link to a chapter on detach/reattach/local digest --> * */ abstract reattach(): void; } declare const CHILD_HEAD = 13; declare const CHILD_TAIL = 14; /** * Configures the `Injector` to return an instance of `useClass` for a token. * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * {@example core/di/ts/provider_spec.ts region='ClassProvider'} * * Note that following two providers are not equal: * * {@example core/di/ts/provider_spec.ts region='ClassProviderDifference'} * * ### Multi-value example * * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'} * * @publicApi */ export declare interface ClassProvider extends ClassSansProvider { /** * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`). */ provide: any; /** * When true, injector returns an array of instances. This is useful to allow multiple * providers spread across many files to provide configuration information to a common token. */ multi?: boolean; } /** * Configures the `Injector` to return a value by invoking a `useClass` function. * Base for `ClassProvider` decorator. * * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @publicApi */ export declare interface ClassSansProvider { /** * Class to instantiate for the `token`. */ useClass: Type<any>; } declare const CLEANUP = 7; /** * @deprecated v4.0.0 - Use IterableChangeRecord instead. * @publicApi */ export declare interface CollectionChangeRecord<V> extends IterableChangeRecord<V> { } /** * Marks that the next string is for comment. * * See `I18nMutateOpCodes` documentation. */ declare const COMMENT_MARKER: COMMENT_MARKER; declare interface COMMENT_MARKER { marker: 'comment'; } /** * Compile an Angular injectable according to its `Injectable` metadata, and patch the resulting * injectable def (`ɵprov`) onto the injectable type. */ declare function compileInjectable(type: Type<any>, srcMeta?: Injectable): void; /** * Low-level service for running the angular compiler during runtime * to create {@link ComponentFactory}s, which * can later be used to create and render a Component instance. * * Each `@NgModule` provides an own `Compiler` to its injector, * that will use the directives/pipes of the ng module for compilation * of components. * * @publicApi */ export declare class Compiler { /** * Compiles the given NgModule and all of its components. All templates of the components listed * in `entryComponents` have to be inlined. */ compileModuleSync: <T>(moduleType: Type<T>) => NgModuleFactory<T>; /** * Compiles the given NgModule and all of its components */ compileModuleAsync: <T>(moduleType: Type<T>) => Promise<NgModuleFactory<T>>; /** * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components. */ compileModuleAndAllComponentsSync: <T>(moduleType: Type<T>) => ModuleWithComponentFactories<T>; /** * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components. */ compileModuleAndAllComponentsAsync: <T>(moduleType: Type<T>) => Promise<ModuleWithComponentFactories<T>>; /** * Clears all caches. */ clearCache(): void; /** * Clears the cache for the given component/ngModule. */ clearCacheFor(type: Type<any>): void; /** * Returns the id for a given NgModule, if one is defined and known to the compiler. */ getModuleId(moduleType: Type<any>): string | undefined; static ɵfac: ɵngcc0.ɵɵFactoryDef<Compiler>; static ɵprov: ɵngcc0.ɵɵInjectableDef<Compiler>; } /** * Token to provide CompilerOptions in the platform injector. * * @publicApi */ export declare const COMPILER_OPTIONS: InjectionToken<CompilerOptions[]>; /** * A factory for creating a Compiler * * @publicApi */ export declare abstract class CompilerFactory { abstract createCompiler(options?: CompilerOptions[]): Compiler; } /** * Options for creating a compiler * * @publicApi */ export declare type CompilerOptions = { useJit?: boolean; defaultEncapsulation?: ViewEncapsulation; providers?: StaticProvider[]; missingTranslation?: MissingTranslationStrategy; preserveWhitespaces?: boolean; }; /** * Supplies configuration metadata for an Angular component. * * @publicApi */ export declare interface Component extends Directive { /** * The change-detection strategy to use for this component. * * When a component is instantiated, Angular creates a change detector, * which is responsible for propagating the component's bindings. * The strategy is one of: * - `ChangeDetectionStrategy#OnPush` sets the strategy to `CheckOnce` (on demand). * - `ChangeDetectionStrategy#Default` sets the strategy to `CheckAlways`. */ changeDetection?: ChangeDetectionStrategy; /** * Defines the set of injectable objects that are visible to its view DOM children. * See [example](#injecting-a-class-with-a-view-provider). * */ viewProviders?: Provider[]; /** * The module ID of the module that contains the component. * The component must be able to resolve relative URLs for templates and styles. * SystemJS exposes the `__moduleName` variable within each module. * In CommonJS, this can be set to `module.id`. * */ moduleId?: string; /** * The relative path or absolute URL of a template file for an Angular component. * If provided, do not supply an inline template using `template`. * */ templateUrl?: string; /** * An inline template for an Angular component. If provided, * do not supply a template file using `templateUrl`. * */ template?: string; /** * One or more relative paths or absolute URLs for files containing CSS stylesheets to use * in this component. */ styleUrls?: string[]; /** * One or more inline CSS stylesheets to use * in this component. */ styles?: string[]; /** * One or more animation `trigger()` calls, containing * `state()` and `transition()` definitions. * See the [Animations guide](/guide/animations) and animations API documentation. * */ animations?: any[]; /** * An encapsulation policy for the template and CSS styles. One of: * - `ViewEncapsulation.Native`: Deprecated. Use `ViewEncapsulation.ShadowDom` instead. * - `ViewEncapsulation.Emulated`: Use shimmed CSS that * emulates the native behavior. * - `ViewEncapsulation.None`: Use global CSS without any * encapsulation. * - `ViewEncapsulation.ShadowDom`: Use Shadow DOM v1 to encapsulate styles. * * If not supplied, the value is taken from `CompilerOptions`. The default compiler option is * `ViewEncapsulation.Emulated`. * * If the policy is set to `ViewEncapsulation.Emulated` and the component has no `styles` * or `styleUrls` specified, the policy is automatically switched to `ViewEncapsulation.None`. */ encapsulation?: ViewEncapsulation; /** * Overrides the default encapsulation start and end delimiters (`{{` and `}}`) */ interpolation?: [string, string]; /** * A set of components that should be compiled along with * this component. For each component listed here, * Angular creates a {@link ComponentFactory} and stores it in the * {@link ComponentFactoryResolver}. * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary. */ entryComponents?: Array<Type<any> | any[]>; /** * True to preserve or false to remove potentially superfluous whitespace characters * from the compiled template. Whitespace characters are those matching the `\s` * character class in JavaScript regular expressions. Default is false, unless * overridden in compiler options. */ preserveWhitespaces?: boolean; } /** * Component decorator and metadata. * * @Annotation * @publicApi */ export declare const Component: ComponentDecorator; /** * Component decorator interface * * @publicApi */ export declare interface ComponentDecorator { /** * Decorator that marks a class as an Angular component and provides configuration * metadata that determines how the component should be processed, * instantiated, and used at runtime. * * Components are the most basic UI building block of an Angular app. * An Angular app contains a tree of Angular components. * * Angular components are a subset of directives, always associated with a template. * Unlike other directives, only one component can be instantiated per an element in a template. * * A component must belong to an NgModule in order for it to be available * to another component or application. To make it a member of an NgModule, * list it in the `declarations` field of the `NgModule` metadata. * * Note that, in addition to these options for configuring a directive, * you can control a component's runtime behavior by implementing * life-cycle hooks. For more information, see the * [Lifecycle Hooks](guide/lifecycle-hooks) guide. * * @usageNotes * * ### Setting component inputs * * The following example creates a component with two data-bound properties, * specified by the `inputs` value. * * <code-example path="core/ts/metadata/directives.ts" region="component-input"></code-example> * * * ### Setting component outputs * * The following example shows two event emitters that emit on an interval. One * emits an output every second, while the other emits every five seconds. * * {@example core/ts/metadata/directives.ts region='component-output-interval'} * * ### Injecting a class with a view provider * * The following simple example injects a class into a component * using the view provider specified in component metadata: * * ```ts * class Greeter { * greet(name:string) { * return 'Hello ' + name + '!'; * } * } * * @Directive({ * selector: 'needs-greeter' * }) * class NeedsGreeter { * greeter:Greeter; * * constructor(greeter:Greeter) { * this.greeter = greeter; * } * } * * @Component({ * selector: 'greet', * viewProviders: [ * Greeter * ], * template: `<needs-greeter></needs-greeter>` * }) * class HelloWorld { * } * * ``` * * ### Preserving whitespace * * Removing whitespace can greatly reduce AOT-generated code size and speed up view creation. * As of Angular 6, the default for `preserveWhitespaces` is false (whitespace is removed). * To change the default setting for all components in your application, set * the `preserveWhitespaces` option of the AOT compiler. * * By default, the AOT compiler removes whitespace characters as follows: * * Trims all whitespaces at the beginning and the end of a template. * * Removes whitespace-only text nodes. For example, * * ```html * <button>Action 1</button> <button>Action 2</button> * ``` * * becomes: * * ```html * <button>Action 1</button><button>Action 2</button> * ``` * * * Replaces a series of whitespace characters in text nodes with a single space. * For example, `<span>\n some text\n</span>` becomes `<span> some text </span>`. * * Does NOT alter text nodes inside HTML tags such as `<pre>` or `<textarea>`, * where whitespace characters are significant. * * Note that these transformations can influence DOM nodes layout, although impact * should be minimal. * * You can override the default behavior to preserve whitespace characters * in certain fragments of a template. For example, you can exclude an entire * DOM sub-tree by using the `ngPreserveWhitespaces` attribute: * * ```html * <div ngPreserveWhitespaces> * whitespaces are preserved here * <span> and here </span> * </div> * ``` * * You can force a single space to be preserved in a text node by using `&ngsp;`, * which is replaced with a space character by Angular's template * compiler: * * ```html * <a>Spaces</a>&ngsp;<a>between</a>&ngsp;<a>links.</a> * <!-->compiled to be equivalent to:</> * <a>Spaces</a> <a>between</a> <a>links.</a> * ``` * * Note that sequences of `&ngsp;` are still collapsed to just one space character when * the `preserveWhitespaces` option is set to `false`. * * ```html * <a>before</a>&ngsp;&ngsp;&ngsp;<a>after</a> * <!-->compiled to be equivalent to:</> * <a>Spaces</a> <a>between</a> <a>links.</a> * ``` * * To preserve sequences of whitespace characters, use the * `ngPreserveWhitespaces` attribute. * * @Annotation */ (obj: Component): TypeDecorator; /** * See the `Component` decorator. */ new (obj: Component): Component; } declare interface ComponentDefFeature { <T>(componentDef: ɵComponentDef<T>): void; /** * Marks a feature as something that {@link InheritDefinitionFeature} will execute * during inheritance. * * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers * identifying the change as a side effect, and the feature will be included in * every bundle. */ ngInherit?: true; } /** * Base class for a factory that can create a component dynamically. * Instantiate a factory for a given type of component with `resolveComponentFactory()`. * Use the resulting `ComponentFactory.create()` method to create a component of that type. * * @see [Dynamic Components](guide/dynamic-component-loader) * * @publicApi */ declare abstract class ComponentFactory<C> { /** * The component's HTML selector. */ abstract get selector(): string; /** * The type of component the factory will create. */ abstract get componentType(): Type<any>; /** * Selector for all <ng-content> elements in the component. */ abstract get ngContentSelectors(): string[]; /** * The inputs of the component. */ abstract get inputs(): { propName: string; templateName: string; }[]; /** * The outputs of the component. */ abstract get outputs(): { propName: string; templateName: string; }[]; /** * Creates a new component. */ abstract create(injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string | any, ngModule?: NgModuleRef<any>): ComponentRef<C>; } export { ComponentFactory } export { ComponentFactory as ɵComponentFactory } /** * A simple registry that maps `Components` to generated `ComponentFactory` classes * that can be used to create instances of components. * Use to obtain the factory for a given component type, * then use the factory's `create()` method to create a component of that type. * * @see [Dynamic Components](guide/dynamic-component-loader) * @publicApi */ export declare abstract class ComponentFactoryResolver { static NULL: ComponentFactoryResolver; /** * Retrieves the factory object that creates a component of the given type. * @param component The component type. */ abstract resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>; } declare type ComponentInstance = {}; /** * Represents a component created by a `ComponentFactory`. * Provides access to the component instance and related objects, * and provides the means of destroying the instance. * * @publicApi */ export declare abstract class ComponentRef<C> { /** * The host or anchor [element](guide/glossary#element) for this component instance. */ abstract get location(): ElementRef; /** * The [dependency injector](guide/glossary#injector) for this component instance. */ abstract get injector(): Injector; /** * This component instance. */ abstract get instance(): C; /** * The [host view](guide/glossary#view-tree) defined by the template * for this component instance. */ abstract get hostView(): ViewRef; /** * The change detector for this component instance. */ abstract get changeDetectorRef(): ChangeDetectorRef; /** * The type of this component (as created by a `ComponentFactory` class). */ abstract get componentType(): Type<any>; /** * Destroys the component instance and all of the data structures associated with it. */ abstract destroy(): void; /** * A lifecycle hook that provides additional developer-defined cleanup * functionality for the component. * @param callback A handler function that cleans up developer-defined data * associated with this component. Called when the `destroy()` method is invoked. */ abstract onDestroy(callback: Function): void; } /** * Definition of what a template rendering function should look like for a component. */ declare type ComponentTemplate<T> = { <U extends T>(rf: ɵRenderFlags, ctx: T | U): void; }; /** * Configures the `Injector` to return an instance of a token. * * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'} * * ### Multi-value example * * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'} * * @publicApi */ export declare interface ConstructorProvider extends ConstructorSansProvider { /** * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`. */ provide: Type<any>; /** * When true, injector returns an array of instances. This is useful to allow multiple * providers spread across many files to provide configuration information to a common token. */ multi?: boolean; } /** * Configures the `Injector` to return an instance of a token. * * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * ```ts * @Injectable(SomeModule, {deps: []}) * class MyService {} * ``` * * @publicApi */ export declare interface ConstructorSansProvider { /** * A list of `token`s to be resolved by the injector. */ deps?: any[]; } /** * Type of the ContentChild metadata. * * @publicApi */ export declare type ContentChild = Query; /** * ContentChild decorator and metadata. * * * @Annotation * * @publicApi */ export declare const ContentChild: ContentChildDecorator; /** * Type of the ContentChild decorator / constructor function. * * @publicApi */ export declare interface ContentChildDecorator { /** * Parameter decorator that configures a content query. * * Use to get the first element or the directive matching the selector from the content DOM. * If the content DOM changes, and a new child matches the selector, * the property will be updated. * * Content queries are set before the `ngAfterContentInit` callback is called. * * Does not retrieve elements or directives that are in other components' templates, * since a component's template is always a black box to its ancestors. * * **Metadata Properties**: * * * **selector** - The directive type or the name used for querying. * * **read** - True to read a different token from the queried element. * * **static** - True to resolve query results before change detection runs, * false to resolve after change detection. Defaults to false. * * @usageNotes * * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'} * * ### Example * * {@example core/di/ts/contentChild/content_child_example.ts region='Component'} * * @Annotation */ (selector: Type<any> | Function | string, opts?: { read?: any; static?: boolean; }): any; new (selector: Type<any> | Function | string, opts?: { read?: any; static?: boolean; }): ContentChild; } /** * Type of the ContentChildren metadata. * * * @Annotation * @publicApi */ export declare type ContentChildren = Query; /** * ContentChildren decorator and metadata. * * * @Annotation * @publicApi */ export declare const ContentChildren: ContentChildrenDecorator; /** * Type of the ContentChildren decorator / constructor function. * * @see `ContentChildren`. * @publicApi */ export declare interface ContentChildrenDecorator { /** * Parameter decorator that configures a content query. * * Use to get the `QueryList` of elements or directives from the content DOM. * Any time a child element is added, removed, or moved, the query list will be * updated, and the changes observable of the query list will emit a new value. * * Content queries are set before the `ngAfterContentInit` callback is called. * * Does not retrieve elements or directives that are in other components' templates, * since a component's template is always a black box to its ancestors. * * **Metadata Properties**: * * * **selector** - The directive type or the name used for querying. * * **descendants** - True to include all descendants, otherwise include only direct children. * * **read** - True to read a different token from the queried elements. * * @usageNotes * * Here is a simple demonstration of how the `ContentChildren` decorator can be used. * * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'} * * ### Tab-pane example * * Here is a slightly more realistic example that shows how `ContentChildren` decorators * can be used to implement a tab pane component. * * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'} * * @Annotation */ (selector: Type<any> | Function | string, opts?: { descendants?: boolean; read?: any; }): any; new (selector: Type<any> | Function | string, opts?: { descendants?: boolean; read?: any; }): Query; } /** * Definition of what a content queries function should look like. */ declare type ContentQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U, directiveIndex: number) => void; declare const CONTEXT = 8; /** Options that control how the component should be bootstrapped. */ declare interface CreateComponentOptions { /** Which renderer factory to use. */ rendererFactory?: RendererFactory3; /** A custom sanitizer instance */ sanitizer?: Sanitizer; /** A custom animation player handler */ playerHandler?: ɵPlayerHandler; /** * Host element on which the component will be bootstrapped. If not specified, * the component definition's `tag` is used to query the existing DOM for the * element to bootstrap. */ host?: RElement | string; /** Module injector for the component. If unspecified, the injector will be NULL_INJECTOR. */ injector?: Injector; /** * List of features to be applied to the created component. Features are simply * functions that decorate a component with a certain behavior. * * Typically, the features in this list are features that cannot be added to the * other features list in the component definition because they rely on other factors. * * Example: `LifecycleHooksFeature` is a function that adds lifecycle hook capabilities * to root components in a tree-shakable way. It cannot be added to the component * features list because there's no way of knowing when the component will be used as * a root component. */ hostFeatures?: HostFeature[]; /** * A function which is used to schedule change detection work in the future. * * When marking components as dirty, it is necessary to schedule the work of * change detection in the future. This is done to coalesce multiple * {@link markDirty} calls into a single changed detection processing. * * The default value of the scheduler is the `requestAnimationFrame` function. * * It is also useful to override this function for testing purposes. */ scheduler?: (work: () => void) => void; } /** * Creates a platform. * Platforms have to be eagerly created via this function. * * @publicApi */ export declare function createPlatform(injector: Injector): PlatformRef; /** * Creates a factory for a platform * * @publicApi */ export declare function createPlatformFactory(parentPlatformFactory: ((extraProviders?: StaticProvider[]) => PlatformRef) | null, name: string, providers?: StaticProvider[]): (extraProviders?: StaticProvider[]) => PlatformRef; /** * Expresses a single CSS Selector. * * Beginning of array * - First index: element name * - Subsequent odd indices: attr keys * - Subsequent even indices: attr values * * After SelectorFlags.CLASS flag * - Class name values * * SelectorFlags.NOT flag * - Changes the mode to NOT * - Can be combined with other flags to set the element / attr / class mode * * e.g. SelectorFlags.NOT | SelectorFlags.ELEMENT * * Example: * Original: `div.foo.bar[attr1=val1][attr2]` * Parsed: ['div', 'attr1', 'val1', 'attr2', '', SelectorFlags.CLASS, 'foo', 'bar'] * * Original: 'div[attr1]:not(.foo[attr2]) * Parsed: [ * 'div', 'attr1', '', * SelectorFlags.NOT | SelectorFlags.ATTRIBUTE 'attr2', '', SelectorFlags.CLASS, 'foo' * ] * * See more examples in node_selector_matcher_spec.ts */ declare type CssSelector = (string | SelectorFlags)[]; /** * Defines a schema that allows an NgModule to contain the following: * - Non-Angular elements named with dash case (`-`). * - Element properties named with dash case (`-`). * Dash case is the naming convention for custom elements. * * @publicApi */ export declare const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata; /** * @publicApi */ export declare interface DebugElement extends DebugNode { readonly name: string; readonly properties: { [key: string]: any; }; readonly attributes: { [key: string]: string | null; }; readonly classes: { [key: string]: boolean; }; readonly styles: { [key: string]: string | null; }; readonly childNodes: DebugNode[]; readonly nativeElement: any; readonly children: DebugElement[]; query(predicate: Predicate<DebugElement>): DebugElement; queryAll(predicate: Predicate<DebugElement>): DebugElement[]; queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[]; triggerEventHandler(eventName: string, eventObj: any): void; } /** * @publicApi */ export declare const DebugElement: { new (...args: any[]): DebugElement; }; declare class DebugElement__POST_R3__ extends DebugNode__POST_R3__ implements DebugElement { constructor(nativeNode: Element); get nativeElement(): Element | null; get name(): string; /** * Gets a map of property names to property values for an element. * * This map includes: * - Regular property bindings (e.g. `[id]="id"`) * - Host property bindings (e.g. `host: { '[id]': "id" }`) * - Interpolated property bindings (e.g. `id="{{ value }}") * * It does not include: * - input property bindings (e.g. `[myCustomInput]="value"`) * - attribute bindings (e.g. `[attr.role]="menu"`) */ get properties(): { [key: string]: any; }; get attributes(): { [key: string]: string | null; }; get styles(): { [key: string]: string | null; }; get classes(): { [key: string]: boolean; }; get childNodes(): DebugNode[]; get children(): DebugElement[]; query(predicate: Predicate<DebugElement>): DebugElement; queryAll(predicate: Predicate<DebugElement>): DebugElement[]; queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[]; triggerEventHandler(eventName: string, eventObj: any): void; } /** * @publicApi */ export declare class DebugEventListener { name: string; callback: Function; constructor(name: string, callback: Function); } /** * @publicApi */ export declare interface DebugNode { readonly listeners: DebugEventListener[]; readonly parent: DebugElement | null; readonly nativeNode: any; readonly injector: Injector; readonly componentInstance: any; readonly context: any; readonly references: { [key: string]: any; }; readonly providerTokens: any[]; } /** * @publicApi */ export declare const DebugNode: { new (...args: any[]): DebugNode; }; declare class DebugNode__POST_R3__ implements DebugNode { readonly nativeNode: Node; constructor(nativeNode: Node); get parent(): DebugElement | null; get injector(): Injector; get componentInstance(): any; get context(): any; get listeners(): DebugEventListener[]; get references(): { [key: string]: any; }; get providerTokens(): any[]; } declare const DECLARATION_COMPONENT_VIEW = 16; declare const DECLARATION_LCONTAINER = 17; declare const DECLARATION_VIEW = 15; /** * Provide this token to set the default currency code your application uses for * CurrencyPipe when there is no currency code passed into it. This is only used by * CurrencyPipe and has no relation to locale currency. Defaults to USD if not configured. * * See the [i18n guide](guide/i18n#setting-up-locale) for more information. * * <div class="alert is-helpful"> * * **Deprecation notice:** * * The default currency code is currently always `USD` but this is deprecated from v9. * * **In v10 the default currency code will be taken from the current locale.** * * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in * your application `NgModule`: * * ```ts * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'} * ``` * * </div> * * @usageNotes * ### Example * * ```typescript * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; * import { AppModule } from './app/app.module'; * * platformBrowserDynamic().bootstrapModule(AppModule, { * providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }] * }); * ``` * * @publicApi */ export declare const DEFAULT_CURRENCY_CODE: InjectionToken<string>; /** * @deprecated v4.0.0 - Should not be part of public API. * @publicApi */ export declare class DefaultIterableDiffer<V> implements IterableDiffer<V>, IterableChanges<V> { readonly length: number; readonly collection: V[] | Iterable<V> | null; private _linkedRecords; private _unlinkedRecords; private _previousItHead; private _itHead; private _itTail; private _additionsHead; private _additionsTail; private _movesHead; private _movesTail; private _removalsHead; private _removalsTail; private _identityChangesHead; private _identityChangesTail; private _trackByFn; constructor(trackByFn?: TrackByFunction<V>); forEachItem(fn: (record: IterableChangeRecord_<V>) => void): void; forEachOperation(fn: (item: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void; forEachPreviousItem(fn: (record: IterableChangeRecord_<V>) => void): void; forEachAddedItem(fn: (record: IterableChangeRecord_<V>) => void): void; forEachMovedItem(fn: (record: IterableChangeRecord_<V>) => void): void; forEachRemovedItem(fn: (record: IterableChangeRecord_<V>) => void): void; forEachIdentityChange(fn: (record: IterableChangeRecord_<V>) => void): void; diff(collection: NgIterable<V> | null | undefined): DefaultIterableDiffer<V> | null; onDestroy(): void; check(collection: NgIterable<V>): boolean; get isDirty(): boolean; private _addToRemovals; } /** * @deprecated in v8, delete after v10. This API should be used only be generated code, and that * code should now use ɵɵdefineInjectable instead. * @publicApi */ export declare const defineInjectable: typeof ɵɵdefineInjectable; declare interface Definition<DF extends DefinitionFactory<any>> { factory: DF | null; } /** * Factory for ViewDefinitions/NgModuleDefinitions. * We use a function so we can reexeute it in case an error happens and use the given logger * function to log the error from the definition of the node, which is shown in all browser * logs. */ declare interface DefinitionFactory<D extends Definition<any>> { (logger: NodeLogger): D; } declare interface DepDef { flags: ɵDepFlags; token: any; tokenKey: string; } /** * Destroy the existing platform. * * @publicApi */ export declare function destroyPlatform(): void; /** * Directive decorator and metadata. * * @Annotation * @publicApi */ export declare interface Directive { /** * The CSS selector that identifies this directive in a template * and triggers instantiation of the directive. * * Declare as one of the following: * * - `element-name`: Select by element name. * - `.class`: Select by class name. * - `[attribute]`: Select by attribute name. * - `[attribute=value]`: Select by attribute name and value. * - `:not(sub_selector)`: Select only if the element does not match the `sub_selector`. * - `selector1, selector2`: Select if either `selector1` or `selector2` matches. * * Angular only allows directives to apply on CSS selectors that do not cross * element boundaries. * * For the following template HTML, a directive with an `input[type=text]` selector, * would be instantiated only on the `<input type="text">` element. * * ```html * <form> * <input type="text"> * <input type="radio"> * <form> * ``` * */ selector?: string; /** * Enumerates the set of data-bound input properties for a directive * * Angular automatically updates input properties during change detection. * The `inputs` property defines a set of `directiveProperty` to `bindingProperty` * configuration: * * - `directiveProperty` specifies the component property where the value is written. * - `bindingProperty` specifies the DOM property where the value is read from. * * When `bindingProperty` is not provided, it is assumed to be equal to `directiveProperty`. * * @usageNotes * * The following example creates a component with two data-bound properties. * * ```typescript * @Component({ * selector: 'bank-account', * inputs: ['bankName', 'id: account-id'], * template: ` * Bank Name: {{bankName}} * Account Id: {{id}} * ` * }) * class BankAccount { * bankName: string; * id: string; * } * ``` * */ inputs?: string[]; /** * Enumerates the set of event-bound output properties. * * When an output property emits an event, an event handler attached to that event * in the template is invoked. * * The `outputs` property defines a set of `directiveProperty` to `bindingProperty` * configuration: * * - `directiveProperty` specifies the component property that emits events. * - `bindingProperty` specifies the DOM property the event handler is attached to. * * @usageNotes * * ```typescript * @Component({ * selector: 'child-dir', * outputs: [ 'bankNameChange' ] * template: `<input (input)="bankNameChange.emit($event.target.value)" />` * }) * class ChildDir { * bankNameChange: EventEmitter<string> = new EventEmitter<string>(); * } * * @Component({ * selector: 'main', * template: ` * {{ bankName }} <child-dir (bankNameChange)="onBankNameChange($event)"></child-dir> * ` * }) * class MainComponent { * bankName: string; * * onBankNameChange(bankName: string) { * this.bankName = bankName; * } * } * ``` * */ outputs?: string[]; /** * Configures the [injector](guide/glossary#injector) of this * directive or component with a [token](guide/glossary#di-token) * that maps to a [provider](guide/glossary#provider) of a dependency. */ providers?: Provider[]; /** * Defines the name that can be used in the template to assign this directive to a variable. * * @usageNotes * * ```ts * @Directive({ * selector: 'child-dir', * exportAs: 'child' * }) * class ChildDir { * } * * @Component({ * selector: 'main', * template: `<child-dir #c="child"></child-dir>` * }) * class MainComponent { * } * ``` * */ exportAs?: string; /** * Configures the queries that will be injected into the directive. * * Content queries are set before the `ngAfterContentInit` callback is called. * View queries are set before the `ngAfterViewInit` callback is called. * * @usageNotes * * The following example shows how queries are defined * and when their results are available in lifecycle hooks: * * ```ts * @Component({ * selector: 'someDir', * queries: { * contentChildren: new ContentChildren(ChildDirective), * viewChildren: new ViewChildren(ChildDirective) * }, * template: '<child-directive></child-directive>' * }) * class SomeDir { * contentChildren: QueryList<ChildDirective>, * viewChildren: QueryList<ChildDirective> * * ngAfterContentInit() { * // contentChildren is set * } * * ngAfterViewInit() { * // viewChildren is set * } * } * ``` * * @Annotation */ queries?: { [key: string]: any; }; /** * Maps class properties to host element bindings for properties, * attributes, and events, using a set of key-value pairs. * * Angular automatically checks host property bindings during change detection. * If a binding changes, Angular updates the directive's host element. * * When the key is a property of the host element, the property value is * the propagated to the specified DOM property. * * When the key is a static attribute in the DOM, the attribute value * is propagated to the specified property in the host element. * * For event handling: * - The key is the DOM event that the directive listens to. * To listen to global events, add the target to the event name. * The target can be `window`, `document` or `body`. * - The value is the statement to execute when the event occurs. If the * statement evaluates to `false`, then `preventDefault` is applied on the DOM * event. A handler method can refer to the `$event` local variable. * */ host?: { [key: string]: string; }; /** * If true, this directive/component will be skipped by the AOT compiler and so will always be * compiled using JIT. * * This exists to support future Ivy work and has no effect currently. */ jit?: true; } /** * Type of the Directive metadata. * * @publicApi */ export declare const Directive: DirectiveDecorator; /** * Type of the Directive decorator / constructor function. * @publicApi */ export declare interface DirectiveDecorator { /** * Decorator that marks a class as an Angular directive. * You can define your own directives to attach custom behavior to elements in the DOM. * * The options provide configuration metadata that determines * how the directive should be processed, instantiated and used at * runtime. * * Directive classes, like component classes, can implement * [life-cycle hooks](guide/lifecycle-hooks) to influence their configuration and behavior. * * * @usageNotes * To define a directive, mark the class with the decorator and provide metadata. * * ```ts * import {Directive} from '@angular/core'; * * @Directive({ * selector: 'my-directive', * }) * export class MyDirective { * ... * } * ``` * * ### Declaring directives * * Directives are [declarables](guide/glossary#declarable). * They must be declared by an NgModule * in order to be usable in an app. * * A directive must belong to exactly one NgModule. Do not re-declare * a directive imported from another module. * List the directive class in the `declarations` field of an NgModule. * * ```ts * declarations: [ * AppComponent, * MyDirective * ], * ``` * * @Annotation */ (obj?: Directive): TypeDecorator; /** * See the `Directive` decorator. */ new (obj?: Directive): Directive; } declare interface DirectiveDefFeature { <T>(directiveDef: ɵDirectiveDef<T>): void; /** * Marks a feature as something that {@link InheritDefinitionFeature} will execute * during inheritance. * * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers * identifying the change as a side effect, and the feature will be included in * every bundle. */ ngInherit?: true; } declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[]; /** * Type used for directiveDefs on component definition. * * The function is necessary to be able to support forward declarations. */ declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList; declare type DirectiveInstance = {}; declare type DirectiveTypeList = (ɵDirectiveType<any> | ɵComponentType<any> | Type<any>)[]; declare type DirectiveTypesOrFactory = (() => DirectiveTypeList) | DirectiveTypeList; declare interface DisposableFn { (): void; } /** * @description * Hook for manual bootstrapping of the application instead of using bootstrap array in @NgModule * annotation. * * Reference to the current application is provided as a parameter. * * See ["Bootstrapping"](guide/bootstrapping) and ["Entry components"](guide/entry-components). * * @usageNotes * ```typescript * class AppModule implements DoBootstrap { * ngDoBootstrap(appRef: ApplicationRef) { * appRef.bootstrap(AppComponent); // Or some other component * } * } * ``` * * @publicApi */ export declare interface DoBootstrap { ngDoBootstrap(appRef: ApplicationRef): void; } /** * A lifecycle hook that invokes a custom change-detection function for a directive, * in addition to the check performed by the default change-detector. * * The default change-detection algorithm looks for differences by comparing * bound-property values by reference across change detection runs. You can use this * hook to check for and respond to changes by some other means. * * When the default change detector detects changes, it invokes `ngOnChanges()` if supplied, * regardless of whether you perform additional change detection. * Typically, you should not use both `DoCheck` and `OnChanges` to respond to * changes on the same input. * * @see `OnChanges` * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface * to invoke it own change-detection cycle. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='DoCheck'} * * @publicApi */ export declare interface DoCheck { /** * A callback method that performs change-detection, invoked * after the default change-detector runs. * See `KeyValueDiffers` and `IterableDiffers` for implementing * custom change checking for collections. * */ ngDoCheck(): void; } /** * Marks that the next string is for element. * * See `I18nMutateOpCodes` documentation. */ declare const ELEMENT_MARKER: ELEMENT_MARKER; declare interface ELEMENT_MARKER { marker: 'element'; } declare interface ElementDef { name: string | null; ns: string | null; /** ns, name, value */ attrs: [string, string, string][] | null; template: ɵViewDefinition | null; componentProvider: NodeDef | null; componentRendererType: RendererType2 | null; componentView: ViewDefinitionFactory | null; /** * visible public providers for DI in the view, * as see from this element. This does not include private providers. */ publicProviders: { [tokenKey: string]: NodeDef; } | null; /** * same as visiblePublicProviders, but also includes private providers * that are located on this element. */ allProviders: { [tokenKey: string]: NodeDef; } | null; handleEvent: ElementHandleEventFn | null; } declare interface ElementHandleEventFn { (view: ViewData, eventName: string, event: any): boolean; } /** * A wrapper around a native element inside of a View. * * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM * element. * * @security Permitting direct access to the DOM can make your application more vulnerable to * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the * [Security Guide](http://g.co/ng/security). * * @publicApi */ export declare class ElementRef<T extends any = any> { /** * The underlying native element or `null` if direct access to native elements is not supported * (e.g. when the application runs in a web worker). * * <div class="callout is-critical"> * <header>Use with caution</header> * <p> * Use this API as the last resort when direct access to DOM is needed. Use templating and * data-binding provided by Angular instead. Alternatively you can take a look at {@link * Renderer2} * which provides API that can safely be used even when direct access to native elements is not * supported. * </p> * <p> * Relying on direct DOM access creates tight coupling between your application and rendering * layers which will make it impossible to separate the two and deploy your application into a * web worker. * </p> * </div> * */ nativeElement: T; constructor(nativeElement: T); } /** * Represents an Angular [view](guide/glossary#view) in a view container. * An [embedded view](guide/glossary#view-tree) can be referenced from a component * other than the hosting component whose template defines it, or it can be defined * independently by a `TemplateRef`. * * Properties of elements in a view can change, but the structure (number and order) of elements in * a view cannot. Change the structure of elements by inserting, moving, or * removing nested views in a view container. * * @see `ViewContainerRef` * * @usageNotes * * The following template breaks down into two separate `TemplateRef` instances, * an outer one and an inner one. * * ``` * Count: {{items.length}} * <ul> * <li *ngFor="let item of items">{{item}}</li> * </ul> * ``` * * This is the outer `TemplateRef`: * * ``` * Count: {{items.length}} * <ul> * <ng-template ngFor let-item [ngForOf]="items"></ng-template> * </ul> * ``` * * This is the inner `TemplateRef`: * * ``` * <li>{{item}}</li> * ``` * * The outer and inner `TemplateRef` instances are assembled into views as follows: * * ``` * <!-- ViewRef: outer-0 --> * Count: 2 * <ul> * <ng-template view-container-ref></ng-template> * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 --> * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 --> * </ul> * <!-- /ViewRef: outer-0 --> * ``` * @publicApi */ export declare abstract class EmbeddedViewRef<C> extends ViewRef { /** * The context for this view, inherited from the anchor element. */ abstract get context(): C; /** * The root nodes for this embedded view. */ abstract get rootNodes(): any[]; } /** * Disable Angular's development mode, which turns off assertions and other * checks within the framework. * * One important assertion this disables verifies that a change detection pass * does not result in additional changes to any bindings (also known as * unidirectional data flow). * * @publicApi */ export declare function enableProdMode(): void; /** * Provides a hook for centralized exception handling. * * The default implementation of `ErrorHandler` prints error messages to the `console`. To * intercept error handling, write a custom exception handler that replaces this default as * appropriate for your app. * * @usageNotes * ### Example * * ``` * class MyErrorHandler implements ErrorHandler { * handleError(error) { * // do something with the exception * } * } * * @NgModule({ * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}] * }) * class MyModule {} * ``` * * @publicApi */ export declare class ErrorHandler { handleError(error: any): void; } /** * Use in components with the `@Output` directive to emit custom events * synchronously or asynchronously, and register handlers for those events * by subscribing to an instance. * * @usageNotes * * Extends * [RxJS `Subject`](https://rxjs.dev/api/index/class/Subject) * for Angular by adding the `emit()` method. * * In the following example, a component defines two output properties * that create event emitters. When the title is clicked, the emitter * emits an open or close event to toggle the current visibility state. * * ```html * @Component({ * selector: 'zippy', * template: ` * <div class="zippy"> * <div (click)="toggle()">Toggle</div> * <div [hidden]="!visible"> * <ng-content></ng-content> * </div> * </div>`}) * export class Zippy { * visible: boolean = true; * @Output() open: EventEmitter<any> = new EventEmitter(); * @Output() close: EventEmitter<any> = new EventEmitter(); * * toggle() { * this.visible = !this.visible; * if (this.visible) { * this.open.emit(null); * } else { * this.close.emit(null); * } * } * } * ``` * * Access the event object with the `$event` argument passed to the output event * handler: * * ```html * <zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy> * ``` * * @see [Observables in Angular](guide/observables-in-angular) * @publicApi */ export declare class EventEmitter<T extends any> extends Subject<T> { /** * Creates an instance of this class that can * deliver events synchronously or asynchronously. * * @param isAsync When true, deliver events asynchronously. * */ constructor(isAsync?: boolean); /** * Emits an event containing a given value. * @param value The value to emit. */ emit(value?: T): void; /** * Registers handlers for events emitted by this instance. * @param generatorOrNext When supplied, a custom handler for emitted events. * @param error When supplied, a custom handler for an error notification * from this emitter. * @param complete When supplied, a custom handler for a completion * notification from this emitter. */ subscribe(generatorOrNext?: any, error?: any, complete?: any): Subscription; } /** * Configures the `Injector` to return a value of another `useExisting` token. * * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * {@example core/di/ts/provider_spec.ts region='ExistingProvider'} * * ### Multi-value example * * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'} * * @publicApi */ export declare interface ExistingProvider extends ExistingSansProvider { /** * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`. */ provide: any; /** * When true, injector returns an array of instances. This is useful to allow multiple * providers spread across many files to provide configuration information to a common token. */ multi?: boolean; } /** * Configures the `Injector` to return a value of another `useExisting` token. * * @see `ExistingProvider` * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @publicApi */ export declare interface ExistingSansProvider { /** * Existing `token` to return. (Equivalent to `injector.get(useExisting)`) */ useExisting: any; } /** * Set of instructions used to process host bindings efficiently. * * See VIEW_DATA.md for more information. */ declare interface ExpandoInstructions extends Array<number | HostBindingsFunction<any> | null> { } /** * Definition of what a factory function should look like. */ declare type FactoryFn<T> = { /** * Subclasses without an explicit constructor call through to the factory of their base * definition, providing it with their own constructor to instantiate. */ <U extends T>(t: Type<U>): U; /** * If no constructor to instantiate is provided, an instance of type T itself is created. */ (t?: undefined): T; }; /** * Configures the `Injector` to return a value by invoking a `useFactory` function. * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * {@example core/di/ts/provider_spec.ts region='FactoryProvider'} * * Dependencies can also be marked as optional: * * {@example core/di/ts/provider_spec.ts region='FactoryProviderOptionalDeps'} * * ### Multi-value example * * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'} * * @publicApi */ export declare interface FactoryProvider extends FactorySansProvider { /** * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`). */ provide: any; /** * When true, injector returns an array of instances. This is useful to allow multiple * providers spread across many files to provide configuration information to a common token. */ multi?: boolean; } /** * Configures the `Injector` to return a value by invoking a `useFactory` function. * * @see `FactoryProvider` * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @publicApi */ export declare interface FactorySansProvider { /** * A function to invoke to create a value for this `token`. The function is invoked with * resolved values of `token`s in the `deps` field. */ useFactory: Function; /** * A list of `token`s to be resolved by the injector. The list of values is then * used as arguments to the `useFactory` function. */ deps?: any[]; } declare const FLAGS = 2; /** * Allows to refer to references which are not yet defined. * * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of * DI is declared, but not yet defined. It is also used when the `token` which we use when creating * a query is not yet defined. * * @usageNotes * ### Example * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'} * @publicApi */ export declare function forwardRef(forwardRefFn: ForwardRefFn): Type<any>; /** * An interface that a function passed into {@link forwardRef} has to implement. * * @usageNotes * ### Example * * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'} * @publicApi */ export declare interface ForwardRefFn { (): any; } /** * @publicApi */ export declare const getDebugNode: (nativeNode: any) => DebugNode | null; /** * Returns the NgModuleFactory with the given id, if it exists and has been loaded. * Factories for modules that do not specify an `id` cannot be retrieved. Throws if the module * cannot be found. * @publicApi */ export declare const getModuleFactory: (id: string) => NgModuleFactory<any>; /** * Returns the current platform. * * @publicApi */ export declare function getPlatform(): PlatformRef | null; /** * Adapter interface for retrieving the `Testability` service associated for a * particular context. * * @publicApi */ export declare interface GetTestability { addToWindow(registry: TestabilityRegistry): void; findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean): Testability | null; } declare type GlobalTargetName = 'document' | 'window' | 'body'; declare type GlobalTargetResolver = (element: any) => { name: GlobalTargetName; target: EventTarget; }; /** * Array of hooks that should be executed for a view and their directive indices. * * For each node of the view, the following data is stored: * 1) Node index (optional) * 2) A series of number/function pairs where: * - even indices are directive indices * - odd indices are hook functions * * Special cases: * - a negative directive index flags an init hook (ngOnInit, ngAfterContentInit, ngAfterViewInit) */ declare type HookData = (number | (() => void))[]; declare const HOST = 0; /** * Type of the Host metadata. * * @publicApi */ export declare interface Host { } /** * Host decorator and metadata. * * @Annotation * @publicApi */ export declare const Host: HostDecorator; /** * Type of the HostBinding metadata. * * @publicApi */ export declare interface HostBinding { /** * The DOM property that is bound to a data property. */ hostPropertyName?: string; } /** * @Annotation * @publicApi */ export declare const HostBinding: HostBindingDecorator; /** * Type of the HostBinding decorator / constructor function. * * @publicApi */ export declare interface HostBindingDecorator { /** * Decorator that marks a DOM property as a host-binding property and supplies configuration * metadata. * Angular automatically checks host property bindings during change detection, and * if a binding changes it updates the host element of the directive. * * @usageNotes * * The following example creates a directive that sets the `valid` and `invalid` * properties on the DOM element that has an `ngModel` directive on it. * * ```typescript * @Directive({selector: '[ngModel]'}) * class NgModelStatus { * constructor(public control: NgModel) {} * @HostBinding('class.valid') get valid() { return this.control.valid; } * @HostBinding('class.invalid') get invalid() { return this.control.invalid; } * } * * @Component({ * selector: 'app', * template: `<input [(ngModel)]="prop">`, * }) * class App { * prop; * } * ``` * */ (hostPropertyName?: string): any; new (hostPropertyName?: string): any; } declare type HostBindingsFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void; /** * Type of the Host decorator / constructor function. * * @publicApi */ export declare interface HostDecorator { /** * Parameter decorator on a view-provider parameter of a class constructor * that tells the DI framework to resolve the view by checking injectors of child * elements, and stop when reaching the host element of the current component. * * For an extended example, see * ["Dependency Injection Guide"](guide/dependency-injection-in-action#optional). * * @usageNotes * * The following shows use with the `@Optional` decorator, and allows for a null result. * * <code-example path="core/di/ts/metadata_spec.ts" region="Host"> * </code-example> */ (): any; new (): Host; } /** See CreateComponentOptions.hostFeatures */ declare type HostFeature = (<T>(component: T, componentDef: ɵComponentDef<T>) => void); /** * Type of the HostListener metadata. * * @publicApi */ export declare interface HostListener { /** * The DOM event to listen for. */ eventName?: string; /** * A set of arguments to pass to the handler method when the event occurs. */ args?: string[]; } /** * Decorator that binds a DOM event to a host listener and supplies configuration metadata. * Angular invokes the supplied handler method when the host element emits the specified event, * and updates the bound element with the result. * * If the handler method returns false, applies `preventDefault` on the bound element. * * @usageNotes * * The following example declares a directive * that attaches a click listener to a button and counts clicks. * * ```ts * @Directive({selector: 'button[counting]'}) * class CountClicks { * numberOfClicks = 0; * * @HostListener('click', ['$event.target']) * onClick(btn) { * console.log('button', btn, 'number of clicks:', this.numberOfClicks++); * } * } * * @Component({ * selector: 'app', * template: '<button counting>Increment</button>', * }) * class App {} * * ``` * * The following example registers another DOM event handler that listens for key-press events. * ``` ts * import { HostListener, Component } from "@angular/core"; * * @Component({ * selector: 'app', * template: `<h1>Hello, you have pressed keys {{counter}} number of times!</h1> Press any key to * increment the counter. * <button (click)="resetCounter()">Reset Counter</button>` * }) * class AppComponent { * counter = 0; * @HostListener('window:keydown', ['$event']) * handleKeyDown(event: KeyboardEvent) { * this.counter++; * } * resetCounter() { * this.counter = 0; * } * } * ``` * * @Annotation * @publicApi */ export declare const HostListener: HostListenerDecorator; /** * Type of the HostListener decorator / constructor function. * * @publicApi */ export declare interface HostListenerDecorator { /** * Decorator that declares a DOM event to listen for, * and provides a handler method to run when that event occurs. */ (eventName: string, args?: string[]): any; new (eventName: string, args?: string[]): any; } /** * Array storing OpCode for dynamically creating `i18n` blocks. * * Example: * ```ts * <I18nCreateOpCode>[ * // For adding text nodes * // --------------------- * // Equivalent to: * // const node = lView[index++] = document.createTextNode('abc'); * // lView[1].insertBefore(node, lView[2]); * 'abc', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore, * * // Equivalent to: * // const node = lView[index++] = document.createTextNode('xyz'); * // lView[1].appendChild(node); * 'xyz', 1 << SHIFT_PARENT | AppendChild, * * // For adding element nodes * // --------------------- * // Equivalent to: * // const node = lView[index++] = document.createElement('div'); * // lView[1].insertBefore(node, lView[2]); * ELEMENT_MARKER, 'div', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore, * * // Equivalent to: * // const node = lView[index++] = document.createElement('div'); * // lView[1].appendChild(node); * ELEMENT_MARKER, 'div', 1 << SHIFT_PARENT | AppendChild, * * // For adding comment nodes * // --------------------- * // Equivalent to: * // const node = lView[index++] = document.createComment(''); * // lView[1].insertBefore(node, lView[2]); * COMMENT_MARKER, '', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore, * * // Equivalent to: * // const node = lView[index++] = document.createComment(''); * // lView[1].appendChild(node); * COMMENT_MARKER, '', 1 << SHIFT_PARENT | AppendChild, * * // For moving existing nodes to a different location * // -------------------------------------------------- * // Equivalent to: * // const node = lView[1]; * // lView[2].insertBefore(node, lView[3]); * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | 3 << SHIFT_REF | InsertBefore, * * // Equivalent to: * // const node = lView[1]; * // lView[2].appendChild(node); * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | AppendChild, * * // For removing existing nodes * // -------------------------------------------------- * // const node = lView[1]; * // removeChild(tView.data(1), node, lView); * 1 << SHIFT_REF | Remove, * * // For writing attributes * // -------------------------------------------------- * // const node = lView[1]; * // node.setAttribute('attr', 'value'); * 1 << SHIFT_REF | Select, 'attr', 'value' * // NOTE: Select followed by two string (vs select followed by OpCode) * ]; * ``` * NOTE: * - `index` is initial location where the extra nodes should be stored in the EXPANDO section of * `LVIewData`. * * See: `applyI18nCreateOpCodes`; */ declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARKER | COMMENT_MARKER | null> { } /** * Stores DOM operations which need to be applied to update DOM render tree due to changes in * expressions. * * The basic idea is that `i18nExp` OpCodes capture expression changes and update a change * mask bit. (Bit 1 for expression 1, bit 2 for expression 2 etc..., bit 32 for expression 32 and * higher.) The OpCodes then compare its own change mask against the expression change mask to * determine if the OpCodes should execute. * * These OpCodes can be used by both the i18n block as well as ICU sub-block. * * ## Example * * Assume * ```ts * if (rf & RenderFlags.Update) { * i18nExp(ctx.exp1); // If changed set mask bit 1 * i18nExp(ctx.exp2); // If changed set mask bit 2 * i18nExp(ctx.exp3); // If changed set mask bit 3 * i18nExp(ctx.exp4); // If changed set mask bit 4 * i18nApply(0); // Apply all changes by executing the OpCodes. * } * ``` * We can assume that each call to `i18nExp` sets an internal `changeMask` bit depending on the * index of `i18nExp`. * * ### OpCodes * ```ts * <I18nUpdateOpCodes>[ * // The following OpCodes represent: `<div i18n-title="pre{{exp1}}in{{exp2}}post">` * // If `changeMask & 0b11` * // has changed then execute update OpCodes. * // has NOT changed then skip `7` values and start processing next OpCodes. * 0b11, 7, * // Concatenate `newValue = 'pre'+lView[bindIndex-4]+'in'+lView[bindIndex-3]+'post';`. * 'pre', -4, 'in', -3, 'post', * // Update attribute: `elementAttribute(1, 'title', sanitizerFn(newValue));` * 1 << SHIFT_REF | Attr, 'title', sanitizerFn, * * // The following OpCodes represent: `<div i18n>Hello {{exp3}}!">` * // If `changeMask & 0b100` * // has changed then execute update OpCodes. * // has NOT changed then skip `4` values and start processing next OpCodes. * 0b100, 4, * // Concatenate `newValue = 'Hello ' + lView[bindIndex -2] + '!';`. * 'Hello ', -2, '!', * // Update text: `lView[1].textContent = newValue;` * 1 << SHIFT_REF | Text, * * // The following OpCodes represent: `<div i18n>{exp4, plural, ... }">` * // If `changeMask & 0b1000` * // has changed then execute update OpCodes. * // has NOT changed then skip `4` values and start processing next OpCodes. * 0b1000, 4, * // Concatenate `newValue = lView[bindIndex -1];`. * -1, * // Switch ICU: `icuSwitchCase(lView[1], 0, newValue);` * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuSwitch, * * // Note `changeMask & -1` is always true, so the IcuUpdate will always execute. * -1, 1, * // Update ICU: `icuUpdateCase(lView[1], 0);` * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuUpdate, * * ]; * ``` * */ declare interface I18nUpdateOpCodes extends Array<string | number | SanitizerFn | null> { } /** * Defines the ICU type of `select` or `plural` */ declare const enum IcuType { select = 0, plural = 1 } /** * This array contains information about input properties that * need to be set once from attribute data. It's ordered by * directive index (relative to element) so it's simple to * look up a specific directive's initial input data. * * Within each sub-array: * * i+0: attribute name * i+1: minified/internal input name * i+2: initial value * * If a directive on a node does not have any input properties * that should be set from attributes, its index is set to null * to avoid a sparse array. * * e.g. [null, ['role-min', 'minified-input', 'button']] */ declare type InitialInputData = (InitialInputs | null)[]; /** * Used by InitialInputData to store input properties * that should be set once from attributes. * * i+0: attribute name * i+1: minified/internal input name * i+2: initial value * * e.g. ['role-min', 'minified-input', 'button'] */ declare type InitialInputs = string[]; /** * Type of the Inject metadata. * * @publicApi */ export declare interface Inject { /** * A [DI token](guide/glossary#di-token) that maps to the dependency to be injected. */ token: any; } /** * Inject decorator and metadata. * * @Annotation * @publicApi */ export declare const Inject: InjectDecorator; /** * Injects a token from the currently active injector. * * Must be used in the context of a factory function such as one defined for an * `InjectionToken`. Throws an error if not called from such a context. * * Within such a factory function, using this function to request injection of a dependency * is faster and more type-safe than providing an additional array of dependencies * (as has been common with `useFactory` providers). * * @param token The injection token for the dependency to be injected. * @param flags Optional flags that control how injection is executed. * The flags correspond to injection strategies that can be specified with * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`. * @returns True if injection is successful, null otherwise. * * @usageNotes * * ### Example * * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'} * * @publicApi */ export declare const inject: typeof ɵɵinject; /** * Type of the Injectable metadata. * * @publicApi */ export declare interface Injectable { /** * Determines which injectors will provide the injectable, * by either associating it with an `@NgModule` or other `InjectorType`, * or by specifying that this injectable should be provided in one of the following injectors: * - 'root' : The application-level injector in most apps. * - 'platform' : A special singleton platform injector shared by all * applications on the page. * - 'any' : Provides a unique instance in every module (including lazy modules) that injects the * token. * */ providedIn?: Type<any> | 'root' | 'platform' | 'any' | null; } /** * Injectable decorator and metadata. * * @Annotation * @publicApi */ export declare const Injectable: InjectableDecorator; /** * Type of the Injectable decorator / constructor function. * * @publicApi */ export declare interface InjectableDecorator { /** * Decorator that marks a class as available to be * provided and injected as a dependency. * * @see [Introduction to Services and DI](guide/architecture-services) * @see [Dependency Injection Guide](guide/dependency-injection) * * @usageNotes * * Marking a class with `@Injectable` ensures that the compiler * will generate the necessary metadata to create the class's * dependencies when the class is injected. * * The following example shows how a service class is properly * marked so that a supporting service can be injected upon creation. * * <code-example path="core/di/ts/metadata_spec.ts" region="Injectable"></code-example> * */ (): TypeDecorator; (options?: { providedIn: Type<any> | 'root' | 'platform' | 'any' | null; } & InjectableProvider): TypeDecorator; new (): Injectable; new (options?: { providedIn: Type<any> | 'root' | 'platform' | 'any' | null; } & InjectableProvider): Injectable; } /** * Injectable providers used in `@Injectable` decorator. * * @publicApi */ export declare type InjectableProvider = ValueSansProvider | ExistingSansProvider | StaticClassSansProvider | ConstructorSansProvider | FactorySansProvider | ClassSansProvider; /** * A `Type` which has an `InjectableDef` static field. * * `InjectableDefType`s contain their own Dependency Injection metadata and are usable in an * `InjectorDef`-based `StaticInjector. * * @publicApi */ export declare interface InjectableType<T> extends Type<T> { /** * Opaque type whose structure is highly version dependent. Do not rely on any properties. */ ɵprov: never; } /** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */ declare function injectChangeDetectorRef(isPipe?: boolean): ChangeDetectorRef; /** * Type of the Inject decorator / constructor function. * * @publicApi */ export declare interface InjectDecorator { /** * Parameter decorator on a dependency parameter of a class constructor * that specifies a custom provider of the dependency. * * Learn more in the ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * The following example shows a class constructor that specifies a * custom provider of a dependency using the parameter decorator. * * When `@Inject()` is not present, the injector uses the type annotation of the * parameter as the provider. * * <code-example path="core/di/ts/metadata_spec.ts" region="InjectWithoutDecorator"> * </code-example> */ (token: any): any; new (token: any): Inject; } /** * Creates an ElementRef from the most recent node. * * @returns The ElementRef instance to use */ declare function injectElementRef(ElementRefToken: typeof ElementRef): ElementRef; /** * Injection flags for DI. * * @publicApi */ export declare enum InjectFlags { /** Check self and check parent injector if needed */ Default = 0, /** * Specifies that an injector should retrieve a dependency from any injector until reaching the * host element of the current component. (Only used with Element Injector) */ Host = 1, /** Don't ascend to ancestors of the node requesting injection. */ Self = 2, /** Skip the node that is requesting injection. */ SkipSelf = 4, /** Inject `defaultValue` instead if token not found. */ Optional = 8 } /** * Creates a token that can be used in a DI Provider. * * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a * runtime representation) such as when injecting an interface, callable type, array or * parameterized type. * * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by * the `Injector`. This provides additional level of type safety. * * ``` * interface MyInterface {...} * var myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken')); * // myInterface is inferred to be MyInterface. * ``` * * When creating an `InjectionToken`, you can optionally specify a factory function which returns * (possibly by creating) a default value of the parameterized type `T`. This sets up the * `InjectionToken` using this factory as a provider as if it was defined explicitly in the * application's root injector. If the factory function, which takes zero arguments, needs to inject * dependencies, it can do so using the `inject` function. See below for an example. * * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As * mentioned above, `'root'` is the default value for `providedIn`. * * @usageNotes * ### Basic Example * * ### Plain InjectionToken * * {@example core/di/ts/injector_spec.ts region='InjectionToken'} * * ### Tree-shakable InjectionToken * * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'} * * * @publicApi */ export declare class InjectionToken<T> { protected _desc: string; readonly ɵprov: never | undefined; constructor(_desc: string, options?: { providedIn?: Type<any> | 'root' | 'platform' | 'any' | null; factory: () => T; }); toString(): string; } /** * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors. * * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a * project. * * @publicApi */ export declare const INJECTOR: InjectionToken<Injector>; /** * Concrete injectors implement this interface. Injectors are configured * with [providers](guide/glossary#provider) that associate * dependencies of various types with [injection tokens](guide/glossary#di-token). * * @see ["DI Providers"](guide/dependency-injection-providers). * @see `StaticProvider` * * @usageNotes * * The following example creates a service injector instance. * * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'} * * ### Usage example * * {@example core/di/ts/injector_spec.ts region='Injector'} * * `Injector` returns itself when given `Injector` as a token: * * {@example core/di/ts/injector_spec.ts region='injectInjector'} * * @publicApi */ export declare abstract class Injector { static THROW_IF_NOT_FOUND: {}; static NULL: Injector; /** * Retrieves an instance from the injector based on the provided token. * @returns The instance from the injector if defined, otherwise the `notFoundValue`. * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`. */ abstract get<T>(token: Type<T> | InjectionToken<T> | AbstractType<T>, notFoundValue?: T, flags?: InjectFlags): T; /** * @deprecated from v4.0.0 use Type<T> or InjectionToken<T> * @suppress {duplicate} */ abstract get(token: any, notFoundValue?: any): any; /** * @deprecated from v5 use the new signature Injector.create(options) */ static create(providers: StaticProvider[], parent?: Injector): Injector; /** * Creates a new injector instance that provides one or more dependencies, * according to a given type or types of `StaticProvider`. * * @param options An object with the following properties: * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider). * * `parent`: (optional) A parent injector. * * `name`: (optional) A developer-defined identifying name for the new injector. * * @returns The new injector instance. * */ static create(options: { providers: StaticProvider[]; parent?: Injector; name?: string; }): Injector; /** @nocollapse */ static ɵprov: never; } declare const INJECTOR_2 = 9; /** * A type which has an `InjectorDef` static field. * * `InjectorDefTypes` can be used to configure a `StaticInjector`. * * @publicApi */ export declare interface InjectorType<T> extends Type<T> { /** * Opaque type whose structure is highly version dependent. Do not rely on any properties. */ ɵinj: never; } /** * Describes the `InjectorDef` equivalent of a `ModuleWithProviders`, an `InjectorDefType` with an * associated array of providers. * * Objects of this type can be listed in the imports section of an `InjectorDef`. * * NOTE: This is a private type and should not be exported */ declare interface InjectorTypeWithProviders<T> { ngModule: InjectorType<T>; providers?: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | any[])[]; } /** Injects a Renderer2 for the current component. */ declare function injectRenderer2(): Renderer2; /** * Creates a TemplateRef given a node. * * @returns The TemplateRef instance to use */ declare function injectTemplateRef<T>(TemplateRefToken: typeof TemplateRef, ElementRefToken: typeof ElementRef): TemplateRef<T> | null; /** * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef * already exists, retrieves the existing ViewContainerRef. * * @returns The ViewContainerRef instance to use */ declare function injectViewContainerRef(ViewContainerRefToken: typeof ViewContainerRef, ElementRefToken: typeof ElementRef): ViewContainerRef; /** * Type of metadata for an `Input` property. * * @publicApi */ export declare interface Input { /** * The name of the DOM property to which the input property is bound. */ bindingPropertyName?: string; } /** * @Annotation * @publicApi */ export declare const Input: InputDecorator; /** * @publicApi */ export declare interface InputDecorator { /** * Decorator that marks a class field as an input property and supplies configuration metadata. * The input property is bound to a DOM property in the template. During change detection, * Angular automatically updates the data property with the DOM property's value. * * @usageNotes * * You can supply an optional name to use in templates when the * component is instantiated, that maps to the * name of the bound property. By default, the original * name of the bound property is used for input binding. * * The following example creates a component with two input properties, * one of which is given a special binding name. * * ```typescript * @Component({ * selector: 'bank-account', * template: ` * Bank Name: {{bankName}} * Account Id: {{id}} * ` * }) * class BankAccount { * // This property is bound using its original name. * @Input() bankName: string; * // this property value is bound to a different property name * // when this component is instantiated in a template. * @Input('account-id') id: string; * * // this property is not bound, and is not automatically updated by Angular * normalizedBankName: string; * } * * @Component({ * selector: 'app', * template: ` * <bank-account bankName="RBC" account-id="4747"></bank-account> * ` * }) * class App {} * ``` * * @see [Input and Output properties](guide/template-syntax#input-and-output-properties) */ (bindingPropertyName?: string): any; new (bindingPropertyName?: string): any; } /** * All implicit instruction state is stored here. * * It is useful to have a single object where all of the state is stored as a mental model * (rather it being spread across many different variables.) * * PERF NOTE: Turns out that writing to a true global variable is slower than * having an intermediate object with properties. */ declare interface InstructionState { /** * Current `LFrame` * * `null` if we have not called `enterView` */ lFrame: LFrame; /** * Stores whether directives should be matched to elements. * * When template contains `ngNonBindable` then we need to prevent the runtime from matching * directives on children of that element. * * Example: * ``` * <my-comp my-directive> * Should match component / directive. * </my-comp> * <div ngNonBindable> * <my-comp my-directive> * Should not match component / directive because we are in ngNonBindable. * </my-comp> * </div> * ``` */ bindingsEnabled: boolean; /** * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error. * * Necessary to support ChangeDetectorRef.checkNoChanges(). */ checkNoChangesMode: boolean; } declare interface InternalNgModuleRef<T> extends NgModuleRef<T> { _bootstrapComponents: Type<any>[]; } declare interface InternalViewRef extends ViewRef { detachFromAppRef(): void; attachToAppRef(appRef: ApplicationRef): void; } /** * Returns whether Angular is in development mode. After called once, * the value is locked and won't change any more. * * By default, this is true, unless a user calls `enableProdMode` before calling this. * * @publicApi */ export declare function isDevMode(): boolean; /** * Record representing the item change information. * * @publicApi */ export declare interface IterableChangeRecord<V> { /** Current index of the item in `Iterable` or null if removed. */ readonly currentIndex: number | null; /** Previous index of the item in `Iterable` or null if added. */ readonly previousIndex: number | null; /** The item. */ readonly item: V; /** Track by identity as computed by the `TrackByFunction`. */ readonly trackById: any; } declare class IterableChangeRecord_<V> implements IterableChangeRecord<V> { item: V; trackById: any; currentIndex: number | null; previousIndex: number | null; constructor(item: V, trackById: any); } /** * An object describing the changes in the `Iterable` collection since last time * `IterableDiffer#diff()` was invoked. * * @publicApi */ export declare interface IterableChanges<V> { /** * Iterate over all changes. `IterableChangeRecord` will contain information about changes * to each item. */ forEachItem(fn: (record: IterableChangeRecord<V>) => void): void; /** * Iterate over a set of operations which when applied to the original `Iterable` will produce the * new `Iterable`. * * NOTE: These are not necessarily the actual operations which were applied to the original * `Iterable`, rather these are a set of computed operations which may not be the same as the * ones applied. * * @param record A change which needs to be applied * @param previousIndex The `IterableChangeRecord#previousIndex` of the `record` refers to the * original `Iterable` location, where as `previousIndex` refers to the transient location * of the item, after applying the operations up to this point. * @param currentIndex The `IterableChangeRecord#currentIndex` of the `record` refers to the * original `Iterable` location, where as `currentIndex` refers to the transient location * of the item, after applying the operations up to this point. */ forEachOperation(fn: (record: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void; /** * Iterate over changes in the order of original `Iterable` showing where the original items * have moved. */ forEachPreviousItem(fn: (record: IterableChangeRecord<V>) => void): void; /** Iterate over all added items. */ forEachAddedItem(fn: (record: IterableChangeRecord<V>) => void): void; /** Iterate over all moved items. */ forEachMovedItem(fn: (record: IterableChangeRecord<V>) => void): void; /** Iterate over all removed items. */ forEachRemovedItem(fn: (record: IterableChangeRecord<V>) => void): void; /** Iterate over all items which had their identity (as computed by the `TrackByFunction`) * changed. */ forEachIdentityChange(fn: (record: IterableChangeRecord<V>) => void): void; } /** * A strategy for tracking changes over time to an iterable. Used by {@link NgForOf} to * respond to changes in an iterable by effecting equivalent changes in the DOM. * * @publicApi */ export declare interface IterableDiffer<V> { /** * Compute a difference between the previous state and the new `object` state. * * @param object containing the new value. * @returns an object describing the difference. The return value is only valid until the next * `diff()` invocation. */ diff(object: NgIterable<V> | undefined | null): IterableChanges<V> | null; } /** * Provides a factory for {@link IterableDiffer}. * * @publicApi */ export declare interface IterableDifferFactory { supports(objects: any): boolean; create<V>(trackByFn?: TrackByFunction<V>): IterableDiffer<V>; } /** * A repository of different iterable diffing strategies used by NgFor, NgClass, and others. * * @publicApi */ export declare class IterableDiffers { /** @nocollapse */ static ɵprov: never; /** * @deprecated v4.0.0 - Should be private */ factories: IterableDifferFactory[]; constructor(factories: IterableDifferFactory[]); static create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers; /** * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the * inherited {@link IterableDiffers} instance with the provided factories and return a new * {@link IterableDiffers} instance. * * @usageNotes * ### Example * * The following example shows how to extend an existing list of factories, * which will only be applied to the injector for this component and its children. * This step is all that's required to make a new {@link IterableDiffer} available. * * ``` * @Component({ * viewProviders: [ * IterableDiffers.extend([new ImmutableListDiffer()]) * ] * }) * ``` */ static extend(factories: IterableDifferFactory[]): StaticProvider; find(iterable: any): IterableDifferFactory; } /** * `KeyValueArray` is an array where even positions contain keys and odd positions contain values. * * `KeyValueArray` provides a very efficient way of iterating over its contents. For small * sets (~10) the cost of binary searching an `KeyValueArray` has about the same performance * characteristics that of a `Map` with significantly better memory footprint. * * If used as a `Map` the keys are stored in alphabetical order so that they can be binary searched * for retrieval. * * See: `keyValueArraySet`, `keyValueArrayGet`, `keyValueArrayIndexOf`, `keyValueArrayDelete`. */ declare interface KeyValueArray<VALUE> extends Array<VALUE | string> { __brand__: 'array-map'; } /** * Record representing the item change information. * * @publicApi */ export declare interface KeyValueChangeRecord<K, V> { /** * Current key in the Map. */ readonly key: K; /** * Current value for the key or `null` if removed. */ readonly currentValue: V | null; /** * Previous value for the key or `null` if added. */ readonly previousValue: V | null; } /** * An object describing the changes in the `Map` or `{[k:string]: string}` since last time * `KeyValueDiffer#diff()` was invoked. * * @publicApi */ export declare interface KeyValueChanges<K, V> { /** * Iterate over all changes. `KeyValueChangeRecord` will contain information about changes * to each item. */ forEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void; /** * Iterate over changes in the order of original Map showing where the original items * have moved. */ forEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void; /** * Iterate over all keys for which values have changed. */ forEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void; /** * Iterate over all added items. */ forEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void; /** * Iterate over all removed items. */ forEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void; } /** * A differ that tracks changes made to an object over time. * * @publicApi */ export declare interface KeyValueDiffer<K, V> { /** * Compute a difference between the previous state and the new `object` state. * * @param object containing the new value. * @returns an object describing the difference. The return value is only valid until the next * `diff()` invocation. */ diff(object: Map<K, V>): KeyValueChanges<K, V> | null; /** * Compute a difference between the previous state and the new `object` state. * * @param object containing the new value. * @returns an object describing the difference. The return value is only valid until the next * `diff()` invocation. */ diff(object: { [key: string]: V; }): KeyValueChanges<string, V> | null; } /** * Provides a factory for {@link KeyValueDiffer}. * * @publicApi */ export declare interface KeyValueDifferFactory { /** * Test to see if the differ knows how to diff this kind of object. */ supports(objects: any): boolean; /** * Create a `KeyValueDiffer`. */ create<K, V>(): KeyValueDiffer<K, V>; } /** * A repository of different Map diffing strategies used by NgClass, NgStyle, and others. * * @publicApi */ export declare class KeyValueDiffers { /** @nocollapse */ static ɵprov: never; /** * @deprecated v4.0.0 - Should be private. */ factories: KeyValueDifferFactory[]; constructor(factories: KeyValueDifferFactory[]); static create<S>(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers; /** * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the * inherited {@link KeyValueDiffers} instance with the provided factories and return a new * {@link KeyValueDiffers} instance. * * @usageNotes * ### Example * * The following example shows how to extend an existing list of factories, * which will only be applied to the injector for this component and its children. * This step is all that's required to make a new {@link KeyValueDiffer} available. * * ``` * @Component({ * viewProviders: [ * KeyValueDiffers.extend([new ImmutableMapDiffer()]) * ] * }) * ``` */ static extend<S>(factories: KeyValueDifferFactory[]): StaticProvider; find(kv: any): KeyValueDifferFactory; } /** * The state associated with a container. * * This is an array so that its structure is closer to LView. This helps * when traversing the view tree (which is a mix of containers and component * views), so we can jump to viewOrContainer[NEXT] in the same way regardless * of type. */ declare interface LContainer extends Array<any> { /** * The host element of this LContainer. * * The host could be an LView if this container is on a component node. * In that case, the component LView is its HOST. */ readonly [HOST]: RElement | RComment | ɵangular_packages_core_core_bo; /** * This is a type field which allows us to differentiate `LContainer` from `StylingContext` in an * efficient way. The value is always set to `true` */ [TYPE]: true; /** * The next active index in the views array to read or write to. This helps us * keep track of where we are in the views array. * In the case the LContainer is created for a ViewContainerRef, * it is set to null to identify this scenario, as indices are "absolute" in that case, * i.e. provided directly by the user of the ViewContainerRef API. * * This is used by `ɵɵembeddedViewStart` to track which `LView` is currently active. * Because `ɵɵembeddedViewStart` is not generated by the compiler this feature is essentially * unused. * * The lowest bit signals that this `LContainer` has transplanted views which need to be change * detected as part of the declaration CD. (See `LView[DECLARATION_COMPONENT_VIEW]`) */ [ACTIVE_INDEX]: ActiveIndexFlag; /** * Access to the parent view is necessary so we can propagate back * up from inside a container to parent[NEXT]. */ [PARENT]: ɵangular_packages_core_core_bo; /** * This allows us to jump from a container to a sibling container or component * view with the same parent, so we can remove listeners efficiently. */ [NEXT]: ɵangular_packages_core_core_bo | LContainer | null; /** * A collection of views created based on the underlying `<ng-template>` element but inserted into * a different `LContainer`. We need to track views created from a given declaration point since * queries collect matches from the embedded view declaration point and _not_ the insertion point. */ [MOVED_VIEWS]: ɵangular_packages_core_core_bo[] | null; /** * Pointer to the `TNode` which represents the host of the container. */ [T_HOST]: TNode; /** The comment element that serves as an anchor for this LContainer. */ readonly [NATIVE]: RComment; /** * Array of `ViewRef`s used by any `ViewContainerRef`s that point to this container. * * This is lazily initialized by `ViewContainerRef` when the first view is inserted. */ [VIEW_REFS]: ViewRef[] | null; } /** * */ declare interface LFrame { /** * Parent LFrame. * * This is needed when `leaveView` is called to restore the previous state. */ parent: LFrame; /** * Child LFrame. * * This is used to cache existing LFrames to relieve the memory pressure. */ child: LFrame | null; /** * State of the current view being processed. * * An array of nodes (text, element, container, etc), pipes, their bindings, and * any local variables that need to be stored between invocations. */ lView: ɵangular_packages_core_core_bo; /** * Current `TView` associated with the `LFrame.lView`. * * One can get `TView` from `lFrame[TVIEW]` however because it is so common it makes sense to * store it in `LFrame` for perf reasons. */ tView: TView; /** * Used to set the parent property when nodes are created and track query results. * * This is used in conjunction with `isParent`. */ previousOrParentTNode: TNode; /** * If `isParent` is: * - `true`: then `previousOrParentTNode` points to a parent node. * - `false`: then `previousOrParentTNode` points to previous node (sibling). */ isParent: boolean; /** * Index of currently selected element in LView. * * Used by binding instructions. Updated as part of advance instruction. */ selectedIndex: number; /** * Current pointer to the binding index. */ bindingIndex: number; /** * The last viewData retrieved by nextContext(). * Allows building nextContext() and reference() calls. * * e.g. const inner = x().$implicit; const outer = x().$implicit; */ contextLView: ɵangular_packages_core_core_bo; /** * Store the element depth count. This is used to identify the root elements of the template * so that we can then attach patch data `LView` to only those elements. We know that those * are the only places where the patch data could change, this way we will save on number * of places where tha patching occurs. */ elementDepthCount: number; /** * Current namespace to be used when creating elements */ currentNamespace: string | null; /** * Current sanitizer */ currentSanitizer: StyleSanitizeFn | null; /** * The root index from which pure function instructions should calculate their binding * indices. In component views, this is TView.bindingStartIndex. In a host binding * context, this is the TView.expandoStartIndex + any dirs/hostVars before the given dir. */ bindingRootIndex: number; /** * Current index of a View or Content Query which needs to be processed next. * We iterate over the list of Queries and increment current query index at every step. */ currentQueryIndex: number; /** * When host binding is executing this points to the directive index. * `TView.data[currentDirectiveIndex]` is `DirectiveDef` * `LView[currentDirectiveIndex]` is directive instance. */ currentDirectiveIndex: number; } /** * Provide this token to set the locale of your application. * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe, * DecimalPipe and PercentPipe) and by ICU expressions. * * See the [i18n guide](guide/i18n#setting-up-locale) for more information. * * @usageNotes * ### Example * * ```typescript * import { LOCALE_ID } from '@angular/core'; * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; * import { AppModule } from './app/app.module'; * * platformBrowserDynamic().bootstrapModule(AppModule, { * providers: [{provide: LOCALE_ID, useValue: 'en-US' }] * }); * ``` * * @publicApi */ export declare const LOCALE_ID: InjectionToken<string>; /** * Type for a function that extracts a value for a local refs. * Example: * - `<div #nativeDivEl>` - `nativeDivEl` should point to the native `<div>` element; * - `<ng-template #tplRef>` - `tplRef` should point to the `TemplateRef` instance; */ declare type LocalRefExtractor = (tNode: TNodeWithLocalRefs, currentView: ɵangular_packages_core_core_bo) => any; /** * lQueries represent a collection of individual LQuery objects tracked in a given view. */ declare interface LQueries { /** * A collection of queries tracked in a given view. */ queries: LQuery<any>[]; /** * A method called when a new embedded view is created. As a result a set of LQueries applicable * for a new embedded view is instantiated (cloned) from the declaration view. * @param tView */ createEmbeddedView(tView: TView): LQueries | null; /** * A method called when an embedded view is inserted into a container. As a result all impacted * `LQuery` objects (and associated `QueryList`) are marked as dirty. * @param tView */ insertView(tView: TView): void; /** * A method called when an embedded view is detached from a container. As a result all impacted * `LQuery` objects (and associated `QueryList`) are marked as dirty. * @param tView */ detachView(tView: TView): void; } /** * An interface that represents query-related information specific to a view instance. Most notably * it contains: * - materialized query matches; * - a pointer to a QueryList where materialized query results should be reported. */ declare interface LQuery<T> { /** * Materialized query matches for a given view only (!). Results are initialized lazily so the * array of matches is set to `null` initially. */ matches: (T | null)[] | null; /** * A QueryList where materialized query results should be reported. */ queryList: QueryList<T>; /** * Clones an LQuery for an embedded view. A cloned query shares the same `QueryList` but has a * separate collection of materialized matches. */ clone(): LQuery<T>; /** * Called when an embedded view, impacting results of this query, is inserted or removed. */ setDirty(): void; } /** Flags associated with an LView (saved in LView[FLAGS]) */ declare const enum LViewFlags { /** The state of the init phase on the first 2 bits */ InitPhaseStateIncrementer = 1, InitPhaseStateMask = 3, /** * Whether or not the view is in creationMode. * * This must be stored in the view rather than using `data` as a marker so that * we can properly support embedded views. Otherwise, when exiting a child view * back into the parent view, `data` will be defined and `creationMode` will be * improperly reported as false. */ CreationMode = 4, /** * Whether or not this LView instance is on its first processing pass. * * An LView instance is considered to be on its "first pass" until it * has completed one creation mode run and one update mode run. At this * time, the flag is turned off. */ FirstLViewPass = 8, /** Whether this view has default change detection strategy (checks always) or onPush */ CheckAlways = 16, /** * Whether or not manual change detection is turned on for onPush components. * * This is a special mode that only marks components dirty in two cases: * 1) There has been a change to an @Input property * 2) `markDirty()` has been called manually by the user * * Note that in this mode, the firing of events does NOT mark components * dirty automatically. * * Manual mode is turned off by default for backwards compatibility, as events * automatically mark OnPush components dirty in View Engine. * * TODO: Add a public API to ChangeDetectionStrategy to turn this mode on */ ManualOnPush = 32, /** Whether or not this view is currently dirty (needing check) */ Dirty = 64, /** Whether or not this view is currently attached to change detection tree. */ Attached = 128, /** Whether or not this view is destroyed. */ Destroyed = 256, /** Whether or not this view is the root view */ IsRoot = 512, /** * Index of the current init phase on last 22 bits */ IndexWithinInitPhaseIncrementer = 1024, IndexWithinInitPhaseShift = 10, IndexWithinInitPhaseReset = 1023 } /** * Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy * that the compiler should use in case of missing translations: * - Error: throw if you have missing translations. * - Warning (default): show a warning in the console and/or shell. * - Ignore: do nothing. * * See the [i18n guide](guide/i18n#missing-translation) for more information. * * @usageNotes * ### Example * ```typescript * import { MissingTranslationStrategy } from '@angular/core'; * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; * import { AppModule } from './app/app.module'; * * platformBrowserDynamic().bootstrapModule(AppModule, { * missingTranslation: MissingTranslationStrategy.Error * }); * ``` * * @publicApi */ export declare enum MissingTranslationStrategy { Error = 0, Warning = 1, Ignore = 2 } /** * Combination of NgModuleFactory and ComponentFactorys. * * @publicApi */ export declare class ModuleWithComponentFactories<T> { ngModuleFactory: NgModuleFactory<T>; componentFactories: ComponentFactory<any>[]; constructor(ngModuleFactory: NgModuleFactory<T>, componentFactories: ComponentFactory<any>[]); } /** * A wrapper around an NgModule that associates it with the providers. * * @param T the module type. In Ivy applications, this must be explicitly * provided. * * Note that using ModuleWithProviders without a generic type is deprecated. * The generic will become required in a future version of Angular. * * @publicApi */ export declare interface ModuleWithProviders<T = any /** TODO(alxhub): remove default when callers pass explicit type param */> { ngModule: Type<T>; providers?: Provider[]; } declare const MOVED_VIEWS = 5; declare const NATIVE = 7; declare const NEXT = 4; declare interface NgContentDef { /** * this index is checked against NodeDef.ngContentIndex to find the nodes * that are matched by this ng-content. * Note that a NodeDef with an ng-content can be reprojected, i.e. * have a ngContentIndex on its own. */ index: number; } /** * A type describing supported iterable types. * * @publicApi */ export declare type NgIterable<T> = Array<T> | Iterable<T>; /** * Type of the NgModule metadata. * * @publicApi */ export declare interface NgModule { /** * The set of injectable objects that are available in the injector * of this module. * * @see [Dependency Injection guide](guide/dependency-injection) * @see [NgModule guide](guide/providers) * * @usageNotes * * Dependencies whose providers are listed here become available for injection * into any component, directive, pipe or service that is a child of this injector. * The NgModule used for bootstrapping uses the root injector, and can provide dependencies * to any part of the app. * * A lazy-loaded module has its own injector, typically a child of the app root injector. * Lazy-loaded services are scoped to the lazy-loaded module's injector. * If a lazy-loaded module also provides the `UserService`, any component created * within that module's context (such as by router navigation) gets the local instance * of the service, not the instance in the root injector. * Components in external modules continue to receive the instance provided by their injectors. * * ### Example * * The following example defines a class that is injected in * the HelloWorld NgModule: * * ``` * class Greeter { * greet(name:string) { * return 'Hello ' + name + '!'; * } * } * * @NgModule({ * providers: [ * Greeter * ] * }) * class HelloWorld { * greeter:Greeter; * * constructor(greeter:Greeter) { * this.greeter = greeter; * } * } * ``` */ providers?: Provider[]; /** * The set of components, directives, and pipes ([declarables](guide/glossary#declarable)) * that belong to this module. * * @usageNotes * * The set of selectors that are available to a template include those declared here, and * those that are exported from imported NgModules. * * Declarables must belong to exactly one module. * The compiler emits an error if you try to declare the same class in more than one module. * Be careful not to declare a class that is imported from another module. * * ### Example * * The following example allows the CommonModule to use the `NgFor` * directive. * * ```javascript * @NgModule({ * declarations: [NgFor] * }) * class CommonModule { * } * ``` */ declarations?: Array<Type<any> | any[]>; /** * The set of NgModules whose exported [declarables](guide/glossary#declarable) * are available to templates in this module. * * @usageNotes * * A template can use exported declarables from any * imported module, including those from modules that are imported indirectly * and re-exported. * For example, `ModuleA` imports `ModuleB`, and also exports * it, which makes the declarables from `ModuleB` available * wherever `ModuleA` is imported. * * ### Example * * The following example allows MainModule to use anything exported by * `CommonModule`: * * ```javascript * @NgModule({ * imports: [CommonModule] * }) * class MainModule { * } * ``` * */ imports?: Array<Type<any> | ModuleWithProviders<{}> | any[]>; /** * The set of components, directives, and pipes declared in this * NgModule that can be used in the template of any component that is part of an * NgModule that imports this NgModule. Exported declarations are the module's public API. * * A declarable belongs to one and only one NgModule. * A module can list another module among its exports, in which case all of that module's * public declaration are exported. * * @usageNotes * * Declarations are private by default. * If this ModuleA does not export UserComponent, then only the components within this * ModuleA can use UserComponent. * * ModuleA can import ModuleB and also export it, making exports from ModuleB * available to an NgModule that imports ModuleA. * * ### Example * * The following example exports the `NgFor` directive from CommonModule. * * ```javascript * @NgModule({ * exports: [NgFor] * }) * class CommonModule { * } * ``` */ exports?: Array<Type<any> | any[]>; /** * The set of components to compile when this NgModule is defined, * so that they can be dynamically loaded into the view. * * For each component listed here, Angular creates a `ComponentFactory` * and stores it in the `ComponentFactoryResolver`. * * Angular automatically adds components in the module's bootstrap * and route definitions into the `entryComponents` list. Use this * option to add components that are bootstrapped * using one of the imperative techniques, such as `ViewContainerRef.createComponent()`. * * @see [Entry Components](guide/entry-components) * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary. */ entryComponents?: Array<Type<any> | any[]>; /** * The set of components that are bootstrapped when * this module is bootstrapped. The components listed here * are automatically added to `entryComponents`. */ bootstrap?: Array<Type<any> | any[]>; /** * The set of schemas that declare elements to be allowed in the NgModule. * Elements and properties that are neither Angular components nor directives * must be declared in a schema. * * Allowed value are `NO_ERRORS_SCHEMA` and `CUSTOM_ELEMENTS_SCHEMA`. * * @security When using one of `NO_ERRORS_SCHEMA` or `CUSTOM_ELEMENTS_SCHEMA` * you must ensure that allowed elements and properties securely escape inputs. */ schemas?: Array<SchemaMetadata | any[]>; /** * A name or path that uniquely identifies this NgModule in `getModuleFactory`. * If left `undefined`, the NgModule is not registered with * `getModuleFactory`. */ id?: string; /** * If true, this module will be skipped by the AOT compiler and so will always be compiled * using JIT. * * This exists to support future Ivy work and has no effect currently. */ jit?: true; } /** * @Annotation * @publicApi */ export declare const NgModule: NgModuleDecorator; /** * Type of the NgModule decorator / constructor function. * * @publicApi */ export declare interface NgModuleDecorator { /** * Decorator that marks a class as an NgModule and supplies configuration metadata. */ (obj?: NgModule): TypeDecorator; new (obj?: NgModule): NgModule; } declare interface NgModuleDefinition extends Definition<NgModuleDefinitionFactory> { providers: NgModuleProviderDef[]; providersByKey: { [tokenKey: string]: NgModuleProviderDef; }; modules: any[]; scope: 'root' | 'platform' | null; } declare interface NgModuleDefinitionFactory extends DefinitionFactory<NgModuleDefinition> { } /** * @publicApi */ export declare abstract class NgModuleFactory<T> { abstract get moduleType(): Type<T>; abstract create(parentInjector: Injector | null): NgModuleRef<T>; } /** * Used to load ng module factories. * * @publicApi * @deprecated the `string` form of `loadChildren` is deprecated, and `NgModuleFactoryLoader` is * part of its implementation. See `LoadChildren` for more details. */ export declare abstract class NgModuleFactoryLoader { abstract load(path: string): Promise<NgModuleFactory<any>>; } declare interface NgModuleProviderDef { flags: ɵNodeFlags; index: number; token: any; value: any; deps: DepDef[]; } /** * Represents an instance of an NgModule created via a {@link NgModuleFactory}. * * `NgModuleRef` provides access to the NgModule Instance as well other objects related to this * NgModule Instance. * * @publicApi */ export declare abstract class NgModuleRef<T> { /** * The injector that contains all of the providers of the NgModule. */ abstract get injector(): Injector; /** * The ComponentFactoryResolver to get hold of the ComponentFactories * declared in the `entryComponents` property of the module. */ abstract get componentFactoryResolver(): ComponentFactoryResolver; /** * The NgModule instance. */ abstract get instance(): T; /** * Destroys the module instance and all of the data structures associated with it. */ abstract destroy(): void; /** * Allows to register a callback that will be called when the module is destroyed. */ abstract onDestroy(callback: () => void): void; } /** * A token for third-party components that can register themselves with NgProbe. * * @publicApi */ export declare class NgProbeToken { name: string; token: any; constructor(name: string, token: any); } /** * An injectable service for executing work inside or outside of the Angular zone. * * The most common use of this service is to optimize performance when starting a work consisting of * one or more asynchronous tasks that don't require UI updates or error handling to be handled by * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks * can reenter the Angular zone via {@link #run}. * * <!-- TODO: add/fix links to: * - docs explaining zones and the use of zones in Angular and change-detection * - link to runOutsideAngular/run (throughout this file!) * --> * * @usageNotes * ### Example * * ``` * import {Component, NgZone} from '@angular/core'; * import {NgIf} from '@angular/common'; * * @Component({ * selector: 'ng-zone-demo', * template: ` * <h2>Demo: NgZone</h2> * * <p>Progress: {{progress}}%</p> * <p *ngIf="progress >= 100">Done processing {{label}} of Angular zone!</p> * * <button (click)="processWithinAngularZone()">Process within Angular zone</button> * <button (click)="processOutsideOfAngularZone()">Process outside of Angular zone</button> * `, * }) * export class NgZoneDemo { * progress: number = 0; * label: string; * * constructor(private _ngZone: NgZone) {} * * // Loop inside the Angular zone * // so the UI DOES refresh after each setTimeout cycle * processWithinAngularZone() { * this.label = 'inside'; * this.progress = 0; * this._increaseProgress(() => console.log('Inside Done!')); * } * * // Loop outside of the Angular zone * // so the UI DOES NOT refresh after each setTimeout cycle * processOutsideOfAngularZone() { * this.label = 'outside'; * this.progress = 0; * this._ngZone.runOutsideAngular(() => { * this._increaseProgress(() => { * // reenter the Angular zone and display done * this._ngZone.run(() => { console.log('Outside Done!'); }); * }); * }); * } * * _increaseProgress(doneCallback: () => void) { * this.progress += 1; * console.log(`Current progress: ${this.progress}%`); * * if (this.progress < 100) { * window.setTimeout(() => this._increaseProgress(doneCallback), 10); * } else { * doneCallback(); * } * } * } * ``` * * @publicApi */ export declare class NgZone { readonly hasPendingMacrotasks: boolean; readonly hasPendingMicrotasks: boolean; /** * Whether there are no outstanding microtasks or macrotasks. */ readonly isStable: boolean; /** * Notifies when code enters Angular Zone. This gets fired first on VM Turn. */ readonly onUnstable: EventEmitter<any>; /** * Notifies when there is no more microtasks enqueued in the current VM Turn. * This is a hint for Angular to do change detection, which may enqueue more microtasks. * For this reason this event can fire multiple times per VM Turn. */ readonly onMicrotaskEmpty: EventEmitter<any>; /** * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which * implies we are about to relinquish VM turn. * This event gets called just once. */ readonly onStable: EventEmitter<any>; /** * Notifies that an error has been delivered. */ readonly onError: EventEmitter<any>; constructor({ enableLongStackTrace, shouldCoalesceEventChangeDetection }: { enableLongStackTrace?: boolean | undefined; shouldCoalesceEventChangeDetection?: boolean | undefined; }); static isInAngularZone(): boolean; static assertInAngularZone(): void; static assertNotInAngularZone(): void; /** * Executes the `fn` function synchronously within the Angular zone and returns value returned by * the function. * * Running functions via `run` allows you to reenter Angular zone from a task that was executed * outside of the Angular zone (typically started via {@link #runOutsideAngular}). * * Any future tasks or microtasks scheduled from within this function will continue executing from * within the Angular zone. * * If a synchronous error happens it will be rethrown and not reported via `onError`. */ run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T; /** * Executes the `fn` function synchronously within the Angular zone as a task and returns value * returned by the function. * * Running functions via `run` allows you to reenter Angular zone from a task that was executed * outside of the Angular zone (typically started via {@link #runOutsideAngular}). * * Any future tasks or microtasks scheduled from within this function will continue executing from * within the Angular zone. * * If a synchronous error happens it will be rethrown and not reported via `onError`. */ runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[], name?: string): T; /** * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not * rethrown. */ runGuarded<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T; /** * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by * the function. * * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do * work that * doesn't trigger Angular change-detection or is subject to Angular's error handling. * * Any future tasks or microtasks scheduled from within this function will continue executing from * outside of the Angular zone. * * Use {@link #run} to reenter the Angular zone and do work that updates the application model. */ runOutsideAngular<T>(fn: (...args: any[]) => T): T; } /** * Defines a schema that allows any property on any element. * * @publicApi */ export declare const NO_ERRORS_SCHEMA: SchemaMetadata; declare interface NodeCheckFn { (view: ViewData, nodeIndex: number, argStyle: ɵArgumentType.Dynamic, values: any[]): any; (view: ViewData, nodeIndex: number, argStyle: ɵArgumentType.Inline, v0?: any, v1?: any, v2?: any, v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any; } /** * Node instance data. * * We have a separate type per NodeType to save memory * (TextData | ElementData | ProviderData | PureExpressionData | QueryList<any>) * * To keep our code monomorphic, * we prohibit using `NodeData` directly but enforce the use of accessors (`asElementData`, ...). * This way, no usage site can get a `NodeData` from view.nodes and then use it for different * purposes. */ declare class NodeData { private __brand; } /** * A node definition in the view. * * Note: We use one type for all nodes so that loops that loop over all nodes * of a ViewDefinition stay monomorphic! */ declare interface NodeDef { flags: ɵNodeFlags; nodeIndex: number; checkIndex: number; parent: NodeDef | null; renderParent: NodeDef | null; /** this is checked against NgContentDef.index to find matched nodes */ ngContentIndex: number | null; /** number of transitive children */ childCount: number; /** aggregated NodeFlags for all transitive children (does not include self) **/ childFlags: ɵNodeFlags; /** aggregated NodeFlags for all direct children (does not include self) **/ directChildFlags: ɵNodeFlags; bindingIndex: number; bindings: BindingDef[]; bindingFlags: ɵBindingFlags; outputIndex: number; outputs: OutputDef[]; /** * references that the user placed on the element */ references: { [refId: string]: ɵQueryValueType; }; /** * ids and value types of all queries that are matched by this node. */ matchedQueries: { [queryId: number]: ɵQueryValueType; }; /** Binary or of all matched query ids of this node. */ matchedQueryIds: number; /** * Binary or of all query ids that are matched by one of the children. * This includes query ids from templates as well. * Used as a bloom filter. */ childMatchedQueries: number; element: ElementDef | null; provider: ProviderDef | null; text: TextDef | null; query: QueryDef | null; ngContent: NgContentDef | null; } /** * Function to call console.error at the right source location. This is an indirection * via another function as browser will log the location that actually called * `console.error`. */ declare interface NodeLogger { (): () => void; } /** * Object Oriented style of API needed to create elements and text nodes. * * This is the native browser API style, e.g. operations are methods on individual objects * like HTMLElement. With this style, no additional code is needed as a facade * (reducing payload size). * */ declare interface ObjectOrientedRenderer3 { createComment(data: string): RComment; createElement(tagName: string): RElement; createElementNS(namespace: string, tagName: string): RElement; createTextNode(data: string): RText; querySelector(selectors: string): RElement | null; } /** * @description * A lifecycle hook that is called when any data-bound property of a directive changes. * Define an `ngOnChanges()` method to handle the changes. * * @see `DoCheck` * @see `OnInit` * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface to * define an on-changes handler for an input property. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnChanges'} * * @publicApi */ export declare interface OnChanges { /** * A callback method that is invoked immediately after the * default change detector has checked data-bound properties * if at least one has changed, and before the view and content * children are checked. * @param changes The changed properties. */ ngOnChanges(changes: SimpleChanges): void; } /** * A lifecycle hook that is called when a directive, pipe, or service is destroyed. * Use for any custom cleanup that needs to occur when the * instance is destroyed. * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface * to define its own custom clean-up method. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnDestroy'} * * @publicApi */ export declare interface OnDestroy { /** * A callback method that performs custom clean-up, invoked immediately * after a directive, pipe, or service instance is destroyed. */ ngOnDestroy(): void; } /** * @description * A lifecycle hook that is called after Angular has initialized * all data-bound properties of a directive. * Define an `ngOnInit()` method to handle any additional initialization tasks. * * @see `AfterContentInit` * @see [Lifecycle Hooks](guide/lifecycle-hooks#onchanges) guide * * @usageNotes * The following snippet shows how a component can implement this interface to * define its own initialization method. * * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnInit'} * * @publicApi */ export declare interface OnInit { /** * A callback method that is invoked immediately after the * default change detector has checked the directive's * data-bound properties for the first time, * and before any of the view or content children have been checked. * It is invoked only once when the directive is instantiated. */ ngOnInit(): void; } declare interface OpaqueViewState { '__brand__': 'Brand for OpaqueViewState that nothing will match'; } /** * Type of the Optional metadata. * * @publicApi */ export declare interface Optional { } /** * Optional decorator and metadata. * * @Annotation * @publicApi */ export declare const Optional: OptionalDecorator; /** * Type of the Optional decorator / constructor function. * * @publicApi */ export declare interface OptionalDecorator { /** * Parameter decorator to be used on constructor parameters, * which marks the parameter as being an optional dependency. * The DI framework provides null if the dependency is not found. * * Can be used together with other parameter decorators * that modify how dependency injection operates. * * Learn more in the ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * The following code allows the possibility of a null result: * * <code-example path="core/di/ts/metadata_spec.ts" region="Optional"> * </code-example> * */ (): any; new (): Optional; } /** * Type of the Output metadata. * * @publicApi */ export declare interface Output { /** * The name of the DOM property to which the output property is bound. */ bindingPropertyName?: string; } /** * @Annotation * @publicApi */ export declare const Output: OutputDecorator; /** * Type of the Output decorator / constructor function. * * @publicApi */ export declare interface OutputDecorator { /** * Decorator that marks a class field as an output property and supplies configuration metadata. * The DOM property bound to the output property is automatically updated during change detection. * * @usageNotes * * You can supply an optional name to use in templates when the * component is instantiated, that maps to the * name of the bound property. By default, the original * name of the bound property is used for output binding. * * See `Input` decorator for an example of providing a binding name. * * @see [Input and Output properties](guide/template-syntax#input-and-output-properties) * */ (bindingPropertyName?: string): any; new (bindingPropertyName?: string): any; } declare interface OutputDef { type: OutputType; target: 'window' | 'document' | 'body' | 'component' | null; eventName: string; propName: string | null; } declare const enum OutputType { ElementOutput = 0, DirectiveOutput = 1 } /** * A token which indicates the root directory of the application * @publicApi */ export declare const PACKAGE_ROOT_URL: InjectionToken<string>; declare const PARENT = 3; /** * Type of the Pipe metadata. * * @publicApi */ export declare interface Pipe { /** * The pipe name to use in template bindings. * Typically uses [lowerCamelCase](guide/glossary#case-types) * because the name cannot contain hyphens. */ name: string; /** * When true, the pipe is pure, meaning that the * `transform()` method is invoked only when its input arguments * change. Pipes are pure by default. * * If the pipe has internal state (that is, the result * depends on state other than its arguments), set `pure` to false. * In this case, the pipe is invoked on each change-detection cycle, * even if the arguments have not changed. */ pure?: boolean; } /** * @Annotation * @publicApi */ export declare const Pipe: PipeDecorator; /** * Type of the Pipe decorator / constructor function. * * @publicApi */ export declare interface PipeDecorator { /** * * Decorator that marks a class as pipe and supplies configuration metadata. * * A pipe class must implement the `PipeTransform` interface. * For example, if the name is "myPipe", use a template binding expression * such as the following: * * ``` * {{ exp | myPipe }} * ``` * * The result of the expression is passed to the pipe's `transform()` method. * * A pipe must belong to an NgModule in order for it to be available * to a template. To make it a member of an NgModule, * list it in the `declarations` field of the `NgModule` metadata. * * @see [Style Guide: Pipe Names](guide/styleguide#02-09) * */ (obj: Pipe): TypeDecorator; /** * See the `Pipe` decorator. */ new (obj: Pipe): Pipe; } declare type PipeDefList = ɵPipeDef<any>[]; /** * Type used for PipeDefs on component definition. * * The function is necessary to be able to support forward declarations. */ declare type PipeDefListOrFactory = (() => PipeDefList) | PipeDefList; /** * An interface that is implemented by pipes in order to perform a transformation. * Angular invokes the `transform` method with the value of a binding * as the first argument, and any parameters as the second argument in list form. * * @usageNotes * * In the following example, `RepeatPipe` repeats a given value a given number of times. * * ```ts * import {Pipe, PipeTransform} from '@angular/core'; * * @Pipe({name: 'repeat'}) * export class RepeatPipe implements PipeTransform { * transform(value: any, times: number) { * return value.repeat(times); * } * } * ``` * * Invoking `{{ 'ok' | repeat:3 }}` in a template produces `okokok`. * * @publicApi */ export declare interface PipeTransform { transform(value: any, ...args: any[]): any; } /** * A subclass of `Type` which has a static `ɵpipe`:`PipeDef` field making it * consumable for rendering. */ declare interface PipeType<T> extends Type<T> { ɵpipe: never; } declare type PipeTypeList = (PipeType<any> | Type<any>)[]; declare type PipeTypesOrFactory = (() => PipeTypeList) | PipeTypeList; /** * A token that indicates an opaque platform id. * @publicApi */ export declare const PLATFORM_ID: InjectionToken<Object>; /** * A function that will be executed when a platform is initialized. * @publicApi */ export declare const PLATFORM_INITIALIZER: InjectionToken<(() => void)[]>; /** * This platform has to be included in any other platform * * @publicApi */ export declare const platformCore: (extraProviders?: StaticProvider[] | undefined) => PlatformRef; /** * The Angular platform is the entry point for Angular on a web page. Each page * has exactly one platform, and services (such as reflection) which are common * to every Angular application running on the page are bound in its scope. * * A page's platform is initialized implicitly when a platform is created via a platform factory * (e.g. {@link platformBrowser}), or explicitly by calling the {@link createPlatform} function. * * @publicApi */ export declare class PlatformRef { private _injector; private _modules; private _destroyListeners; private _destroyed; /** * Creates an instance of an `@NgModule` for the given platform * for offline compilation. * * @usageNotes * ### Simple Example * * ```typescript * my_module.ts: * * @NgModule({ * imports: [BrowserModule] * }) * class MyModule {} * * main.ts: * import {MyModuleNgFactory} from './my_module.ngfactory'; * import {platformBrowser} from '@angular/platform-browser'; * * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory); * ``` */ bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions): Promise<NgModuleRef<M>>; /** * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler. * * @usageNotes * ### Simple Example * * ```typescript * @NgModule({ * imports: [BrowserModule] * }) * class MyModule {} * * let moduleRef = platformBrowser().bootstrapModule(MyModule); * ``` * */ bootstrapModule<M>(moduleType: Type<M>, compilerOptions?: (CompilerOptions & BootstrapOptions) | Array<CompilerOptions & BootstrapOptions>): Promise<NgModuleRef<M>>; private _moduleDoBootstrap; /** * Register a listener to be called when the platform is disposed. */ onDestroy(callback: () => void): void; /** * Retrieve the platform {@link Injector}, which is the parent injector for * every Angular application on the page and provides singleton providers. */ get injector(): Injector; /** * Destroy the Angular platform and all Angular applications on the page. */ destroy(): void; get destroyed(): boolean; static ɵfac: ɵngcc0.ɵɵFactoryDef<PlatformRef>; static ɵprov: ɵngcc0.ɵɵInjectableDef<PlatformRef>; } declare interface PlatformReflectionCapabilities { isReflectionEnabled(): boolean; factory(type: Type<any>): Function; hasLifecycleHook(type: any, lcProperty: string): boolean; guards(type: any): { [key: string]: any; }; /** * Return a list of annotations/types for constructor parameters */ parameters(type: Type<any>): any[][]; /** * Return a list of annotations declared on the class */ annotations(type: Type<any>): any[]; /** * Return a object literal which describes the annotations on Class fields/properties. */ propMetadata(typeOrFunc: Type<any>): { [key: string]: any[]; }; getter(name: string): ɵGetterFn; setter(name: string): ɵSetterFn; method(name: string): ɵMethodFn; importUri(type: Type<any>): string; resourceUri(type: Type<any>): string; resolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any; resolveEnum(enumIdentifier: any, name: string): any; } /** * A boolean-valued function over a value, possibly including context information * regarding that value's position in an array. * * @publicApi */ export declare interface Predicate<T> { (value: T): boolean; } declare const PREORDER_HOOK_FLAGS = 18; /** More flags associated with an LView (saved in LView[PREORDER_HOOK_FLAGS]) */ declare const enum PreOrderHookFlags { /** The index of the next pre-order hook to be called in the hooks array, on the first 16 bits */ IndexOfTheNextPreOrderHookMaskMask = 65535, /** * The number of init hooks that have already been called, on the last 16 bits */ NumberOfInitHooksCalledIncrementer = 65536, NumberOfInitHooksCalledShift = 16, NumberOfInitHooksCalledMask = 4294901760 } /** * Procedural style of API needed to create elements and text nodes. * * In non-native browser environments (e.g. platforms such as web-workers), this is the * facade that enables element manipulation. This also facilitates backwards compatibility * with Renderer2. */ declare interface ProceduralRenderer3 { destroy(): void; createComment(value: string): RComment; createElement(name: string, namespace?: string | null): RElement; createText(value: string): RText; /** * This property is allowed to be null / undefined, * in which case the view engine won't call it. * This is used as a performance optimization for production mode. */ destroyNode?: ((node: RNode) => void) | null; appendChild(parent: RElement, newChild: RNode): void; insertBefore(parent: RNode, newChild: RNode, refChild: RNode | null): void; removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void; selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): RElement; parentNode(node: RNode): RElement | null; nextSibling(node: RNode): RNode | null; setAttribute(el: RElement, name: string, value: string, namespace?: string | null): void; removeAttribute(el: RElement, name: string, namespace?: string | null): void; addClass(el: RElement, name: string): void; removeClass(el: RElement, name: string): void; setStyle(el: RElement, style: string, value: any, flags?: RendererStyleFlags2 | RendererStyleFlags3): void; removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2 | RendererStyleFlags3): void; setProperty(el: RElement, name: string, value: any): void; setValue(node: RText | RComment, value: string): void; listen(target: GlobalTargetName | RNode, eventName: string, callback: (event: any) => boolean | void): () => void; } /** * Describes a function that is used to process provider lists (such as provider * overrides). */ declare type ProcessProvidersFunction = (providers: Provider[]) => Provider[]; /** * List of slots for a projection. A slot can be either based on a parsed CSS selector * which will be used to determine nodes which are projected into that slot. * * When set to "*", the slot is reserved and can be used for multi-slot projection * using {@link ViewContainerRef#createComponent}. The last slot that specifies the * wildcard selector will retrieve all projectable nodes which do not match any selector. */ declare type ProjectionSlots = (ɵCssSelectorList | '*')[]; /** * This mapping is necessary so we can set input properties and output listeners * properly at runtime when property names are minified or aliased. * * Key: unminified / public input or output name * Value: array containing minified / internal name and related directive index * * The value must be an array to support inputs and outputs with the same name * on the same node. */ declare type PropertyAliases = { [key: string]: PropertyAliasValue; }; /** * Store the runtime input or output names for all the directives. * * i+0: directive instance index * i+1: privateName * * e.g. [0, 'change-minified'] */ declare type PropertyAliasValue = (number | string)[]; /** * Describes how the `Injector` should be configured. * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @see `StaticProvider` * * @publicApi */ export declare type Provider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | any[]; declare interface ProviderDef { token: any; value: any; deps: DepDef[]; } declare interface ProviderOverride { token: any; flags: ɵNodeFlags; value: any; deps: ([ɵDepFlags, any] | any)[]; deprecatedBehavior: boolean; } /** * Testability API. * `declare` keyword causes tsickle to generate externs, so these methods are * not renamed by Closure Compiler. * @publicApi */ declare interface PublicTestability { isStable(): boolean; whenStable(callback: Function, timeout?: number, updateCallback?: Function): void; findProviders(using: any, provider: string, exactMatch: boolean): any[]; } declare const QUERIES = 5; /** * Type of the Query metadata. * * @publicApi */ export declare interface Query { descendants: boolean; first: boolean; read: any; isViewQuery: boolean; selector: any; static?: boolean; } /** * Base class for query metadata. * * @see `ContentChildren`. * @see `ContentChild`. * @see `ViewChildren`. * @see `ViewChild`. * * @publicApi */ export declare abstract class Query { } declare interface QueryBindingDef { propName: string; bindingType: ɵQueryBindingType; } declare interface QueryDef { id: number; filterId: number; bindings: QueryBindingDef[]; } /** * An unmodifiable list of items that Angular keeps up to date when the state * of the application changes. * * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList} * provide. * * Implements an iterable interface, therefore it can be used in both ES6 * javascript `for (var i of items)` loops as well as in Angular templates with * `*ngFor="let i of myList"`. * * Changes can be observed by subscribing to the changes `Observable`. * * NOTE: In the future this class will implement an `Observable` interface. * * @usageNotes * ### Example * ```typescript * @Component({...}) * class Container { * @ViewChildren(Item) items:QueryList<Item>; * } * ``` * * @publicApi */ export declare class QueryList<T> implements Iterable<T> { readonly dirty = true; private _results; readonly changes: Observable<any>; readonly length: number; readonly first: T; readonly last: T; constructor(); /** * See * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) */ map<U>(fn: (item: T, index: number, array: T[]) => U): U[]; /** * See * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) */ filter(fn: (item: T, index: number, array: T[]) => boolean): T[]; /** * See * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) */ find(fn: (item: T, index: number, array: T[]) => boolean): T | undefined; /** * See * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce) */ reduce<U>(fn: (prevValue: U, curValue: T, curIndex: number, array: T[]) => U, init: U): U; /** * See * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) */ forEach(fn: (item: T, index: number, array: T[]) => void): void; /** * See * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some) */ some(fn: (value: T, index: number, array: T[]) => boolean): boolean; /** * Returns a copy of the internal results list as an Array. */ toArray(): T[]; toString(): string; /** * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that * on change detection, it will not notify of changes to the queries, unless a new change * occurs. * * @param resultsTree The query results to store */ reset(resultsTree: Array<T | any[]>): void; /** * Triggers a change event by emitting on the `changes` {@link EventEmitter}. */ notifyOnChanges(): void; /** internal */ setDirty(): void; /** internal */ destroy(): void; [Symbol.iterator]: () => Iterator<T>; } declare class R3Injector { readonly parent: Injector; /** * Map of tokens to records which contain the instances of those tokens. * - `null` value implies that we don't have the record. Used by tree-shakable injectors * to prevent further searches. */ private records; /** * The transitive set of `InjectorType`s which define this injector. */ private injectorDefTypes; /** * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks. */ private onDestroy; /** * Flag indicating this injector provides the APP_ROOT_SCOPE token, and thus counts as the * root scope. */ private readonly scope; readonly source: string | null; /** * Flag indicating that this injector was previously destroyed. */ get destroyed(): boolean; private _destroyed; constructor(def: InjectorType<any>, additionalProviders: StaticProvider[] | null, parent: Injector, source?: string | null); /** * Destroy the injector and release references to every instance or provider associated with it. * * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a * hook was found. */ destroy(): void; get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: any, flags?: InjectFlags): T; toString(): string; private assertNotDestroyed; /** * Add an `InjectorType` or `InjectorTypeWithProviders` and all of its transitive providers * to this injector. * * If an `InjectorTypeWithProviders` that declares providers besides the type is specified, * the function will return "true" to indicate that the providers of the type definition need * to be processed. This allows us to process providers of injector types after all imports of * an injector definition are processed. (following View Engine semantics: see FW-1349) */ private processInjectorType; /** * Process a `SingleProvider` and add it. */ private processProvider; private hydrate; private injectableDefInScope; } declare interface RComment extends RNode { textContent: string | null; } declare interface RCssStyleDeclaration { removeProperty(propertyName: string): string; setProperty(propertyName: string, value: string | null, priority?: string): void; } declare interface RDomTokenList { add(token: string): void; remove(token: string): void; } /** * A ReflectiveDependency injection container used for instantiating objects and resolving * dependencies. * * An `Injector` is a replacement for a `new` operator, which can automatically resolve the * constructor dependencies. * * In typical use, application code asks for the dependencies in the constructor and they are * resolved by the `Injector`. * * @usageNotes * ### Example * * The following example creates an `Injector` configured to create `Engine` and `Car`. * * ```typescript * @Injectable() * class Engine { * } * * @Injectable() * class Car { * constructor(public engine:Engine) {} * } * * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]); * var car = injector.get(Car); * expect(car instanceof Car).toBe(true); * expect(car.engine instanceof Engine).toBe(true); * ``` * * Notice, we don't use the `new` operator because we explicitly want to have the `Injector` * resolve all of the object's dependencies automatically. * * @deprecated from v5 - slow and brings in a lot of code, Use `Injector.create` instead. * @publicApi */ export declare abstract class ReflectiveInjector implements Injector { /** * Turns an array of provider definitions into an array of resolved providers. * * A resolution is a process of flattening multiple nested arrays and converting individual * providers into an array of `ResolvedReflectiveProvider`s. * * @usageNotes * ### Example * * ```typescript * @Injectable() * class Engine { * } * * @Injectable() * class Car { * constructor(public engine:Engine) {} * } * * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]); * * expect(providers.length).toEqual(2); * * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true); * expect(providers[0].key.displayName).toBe("Car"); * expect(providers[0].dependencies.length).toEqual(1); * expect(providers[0].factory).toBeDefined(); * * expect(providers[1].key.displayName).toBe("Engine"); * }); * ``` * */ static resolve(providers: Provider[]): ResolvedReflectiveProvider[]; /** * Resolves an array of providers and creates an injector from those providers. * * The passed-in providers can be an array of `Type`, `Provider`, * or a recursive array of more providers. * * @usageNotes * ### Example * * ```typescript * @Injectable() * class Engine { * } * * @Injectable() * class Car { * constructor(public engine:Engine) {} * } * * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]); * expect(injector.get(Car) instanceof Car).toBe(true); * ``` */ static resolveAndCreate(providers: Provider[], parent?: Injector): ReflectiveInjector; /** * Creates an injector from previously resolved providers. * * This API is the recommended way to construct injectors in performance-sensitive parts. * * @usageNotes * ### Example * * ```typescript * @Injectable() * class Engine { * } * * @Injectable() * class Car { * constructor(public engine:Engine) {} * } * * var providers = ReflectiveInjector.resolve([Car, Engine]); * var injector = ReflectiveInjector.fromResolvedProviders(providers); * expect(injector.get(Car) instanceof Car).toBe(true); * ``` */ static fromResolvedProviders(providers: ResolvedReflectiveProvider[], parent?: Injector): ReflectiveInjector; /** * Parent of this injector. * * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection. * --> */ abstract get parent(): Injector | null; /** * Resolves an array of providers and creates a child injector from those providers. * * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection. * --> * * The passed-in providers can be an array of `Type`, `Provider`, * or a recursive array of more providers. * * @usageNotes * ### Example * * ```typescript * class ParentProvider {} * class ChildProvider {} * * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]); * var child = parent.resolveAndCreateChild([ChildProvider]); * * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true); * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true); * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider)); * ``` */ abstract resolveAndCreateChild(providers: Provider[]): ReflectiveInjector; /** * Creates a child injector from previously resolved providers. * * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection. * --> * * This API is the recommended way to construct injectors in performance-sensitive parts. * * @usageNotes * ### Example * * ```typescript * class ParentProvider {} * class ChildProvider {} * * var parentProviders = ReflectiveInjector.resolve([ParentProvider]); * var childProviders = ReflectiveInjector.resolve([ChildProvider]); * * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders); * var child = parent.createChildFromResolved(childProviders); * * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true); * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true); * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider)); * ``` */ abstract createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector; /** * Resolves a provider and instantiates an object in the context of the injector. * * The created object does not get cached by the injector. * * @usageNotes * ### Example * * ```typescript * @Injectable() * class Engine { * } * * @Injectable() * class Car { * constructor(public engine:Engine) {} * } * * var injector = ReflectiveInjector.resolveAndCreate([Engine]); * * var car = injector.resolveAndInstantiate(Car); * expect(car.engine).toBe(injector.get(Engine)); * expect(car).not.toBe(injector.resolveAndInstantiate(Car)); * ``` */ abstract resolveAndInstantiate(provider: Provider): any; /** * Instantiates an object using a resolved provider in the context of the injector. * * The created object does not get cached by the injector. * * @usageNotes * ### Example * * ```typescript * @Injectable() * class Engine { * } * * @Injectable() * class Car { * constructor(public engine:Engine) {} * } * * var injector = ReflectiveInjector.resolveAndCreate([Engine]); * var carProvider = ReflectiveInjector.resolve([Car])[0]; * var car = injector.instantiateResolved(carProvider); * expect(car.engine).toBe(injector.get(Engine)); * expect(car).not.toBe(injector.instantiateResolved(carProvider)); * ``` */ abstract instantiateResolved(provider: ResolvedReflectiveProvider): any; abstract get(token: any, notFoundValue?: any): any; } /** * A unique object used for retrieving items from the {@link ReflectiveInjector}. * * Keys have: * - a system-wide unique `id`. * - a `token`. * * `Key` is used internally by {@link ReflectiveInjector} because its system-wide unique `id` allows * the * injector to store created objects in a more efficient way. * * `Key` should not be created directly. {@link ReflectiveInjector} creates keys automatically when * resolving * providers. * * @deprecated No replacement * @publicApi */ export declare class ReflectiveKey { token: Object; id: number; readonly displayName: string; /** * Private */ constructor(token: Object, id: number); /** * Retrieves a `Key` for a token. */ static get(token: Object): ReflectiveKey; /** * @returns the number of keys registered in the system. */ static get numberOfKeys(): number; } /** * Subset of API needed for writing attributes, properties, and setting up * listeners on Element. */ declare interface RElement extends RNode { style: RCssStyleDeclaration; classList: RDomTokenList; className: string; textContent: string | null; setAttribute(name: string, value: string): void; removeAttribute(name: string): void; setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void; addEventListener(type: string, listener: EventListener, useCapture?: boolean): void; removeEventListener(type: string, listener?: EventListener, options?: boolean): void; setProperty?(name: string, value: any): void; } declare const RENDERER = 11; /** * Extend this base class to implement custom rendering. By default, Angular * renders a template into DOM. You can use custom rendering to intercept * rendering calls, or to render to something other than DOM. * * Create your custom renderer using `RendererFactory2`. * * Use a custom renderer to bypass Angular's templating and * make custom UI changes that can't be expressed declaratively. * For example if you need to set a property or an attribute whose name is * not statically known, use the `setProperty()` or * `setAttribute()` method. * * @publicApi */ export declare abstract class Renderer2 { /** * Use to store arbitrary developer-defined data on a renderer instance, * as an object containing key-value pairs. * This is useful for renderers that delegate to other renderers. */ abstract get data(): { [key: string]: any; }; /** * Implement this callback to destroy the renderer or the host element. */ abstract destroy(): void; /** * Implement this callback to create an instance of the host element. * @param name An identifying name for the new element, unique within the namespace. * @param namespace The namespace for the new element. * @returns The new element. */ abstract createElement(name: string, namespace?: string | null): any; /** * Implement this callback to add a comment to the DOM of the host element. * @param value The comment text. * @returns The modified element. */ abstract createComment(value: string): any; /** * Implement this callback to add text to the DOM of the host element. * @param value The text string. * @returns The modified element. */ abstract createText(value: string): any; /** * If null or undefined, the view engine won't call it. * This is used as a performance optimization for production mode. */ destroyNode: ((node: any) => void) | null; /** * Appends a child to a given parent node in the host element DOM. * @param parent The parent node. * @param newChild The new child node. */ abstract appendChild(parent: any, newChild: any): void; /** * Implement this callback to insert a child node at a given position in a parent node * in the host element DOM. * @param parent The parent node. * @param newChild The new child nodes. * @param refChild The existing child node that should precede the new node. */ abstract insertBefore(parent: any, newChild: any, refChild: any): void; /** * Implement this callback to remove a child node from the host element's DOM. * @param parent The parent node. * @param oldChild The child node to remove. * @param isHostElement Optionally signal to the renderer whether this element is a host element * or not */ abstract removeChild(parent: any, oldChild: any, isHostElement?: boolean): void; /** * Implement this callback to prepare an element to be bootstrapped * as a root element, and return the element instance. * @param selectorOrNode The DOM element. * @param preserveContent Whether the contents of the root element * should be preserved, or cleared upon bootstrap (default behavior). * Use with `ViewEncapsulation.ShadowDom` to allow simple native * content projection via `<slot>` elements. * @returns The root element. */ abstract selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any; /** * Implement this callback to get the parent of a given node * in the host element's DOM. * @param node The child node to query. * @returns The parent node, or null if there is no parent. * For WebWorkers, always returns true. * This is because the check is synchronous, * and the caller can't rely on checking for null. */ abstract parentNode(node: any): any; /** * Implement this callback to get the next sibling node of a given node * in the host element's DOM. * @returns The sibling node, or null if there is no sibling. * For WebWorkers, always returns a value. * This is because the check is synchronous, * and the caller can't rely on checking for null. */ abstract nextSibling(node: any): any; /** * Implement this callback to set an attribute value for an element in the DOM. * @param el The element. * @param name The attribute name. * @param value The new value. * @param namespace The namespace. */ abstract setAttribute(el: any, name: string, value: string, namespace?: string | null): void; /** * Implement this callback to remove an attribute from an element in the DOM. * @param el The element. * @param name The attribute name. * @param namespace The namespace. */ abstract removeAttribute(el: any, name: string, namespace?: string | null): void; /** * Implement this callback to add a class to an element in the DOM. * @param el The element. * @param name The class name. */ abstract addClass(el: any, name: string): void; /** * Implement this callback to remove a class from an element in the DOM. * @param el The element. * @param name The class name. */ abstract removeClass(el: any, name: string): void; /** * Implement this callback to set a CSS style for an element in the DOM. * @param el The element. * @param style The name of the style. * @param value The new value. * @param flags Flags for style variations. No flags are set by default. */ abstract setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2): void; /** * Implement this callback to remove the value from a CSS style for an element in the DOM. * @param el The element. * @param style The name of the style. * @param flags Flags for style variations to remove, if set. ??? */ abstract removeStyle(el: any, style: string, flags?: RendererStyleFlags2): void; /** * Implement this callback to set the value of a property of an element in the DOM. * @param el The element. * @param name The property name. * @param value The new value. */ abstract setProperty(el: any, name: string, value: any): void; /** * Implement this callback to set the value of a node in the host element. * @param node The node. * @param value The new value. */ abstract setValue(node: any, value: string): void; /** * Implement this callback to start an event listener. * @param target The context in which to listen for events. Can be * the entire window or document, the body of the document, or a specific * DOM element. * @param eventName The event to listen for. * @param callback A handler function to invoke when the event occurs. * @returns An "unlisten" function for disposing of this handler. */ abstract listen(target: 'window' | 'document' | 'body' | any, eventName: string, callback: (event: any) => boolean | void): () => void; } declare type Renderer3 = ObjectOrientedRenderer3 | ProceduralRenderer3; declare const RENDERER_FACTORY = 10; /** * Creates and initializes a custom renderer that implements the `Renderer2` base class. * * @publicApi */ export declare abstract class RendererFactory2 { /** * Creates and initializes a custom renderer for a host DOM element. * @param hostElement The element to render. * @param type The base class to implement. * @returns The new custom renderer instance. */ abstract createRenderer(hostElement: any, type: RendererType2 | null): Renderer2; /** * A callback invoked when rendering has begun. */ abstract begin?(): void; /** * A callback invoked when rendering has completed. */ abstract end?(): void; /** * Use with animations test-only mode. Notifies the test when rendering has completed. * @returns The asynchronous result of the developer-defined function. */ abstract whenRenderingDone?(): Promise<any>; } declare interface RendererFactory3 { createRenderer(hostElement: RElement | null, rendererType: RendererType2 | null): Renderer3; begin?(): void; end?(): void; } /** * Flags for renderer-specific style modifiers. * @publicApi */ export declare enum RendererStyleFlags2 { /** * Marks a style as important. */ Important = 1, /** * Marks a style as using dash case naming (this-is-dash-case). */ DashCase = 2 } declare enum RendererStyleFlags3 { Important = 1, DashCase = 2 } /** * Used by `RendererFactory2` to associate custom rendering data and styles * with a rendering implementation. * @publicApi */ export declare interface RendererType2 { /** * A unique identifying string for the new renderer, used when creating * unique styles for encapsulation. */ id: string; /** * The view encapsulation type, which determines how styles are applied to * DOM elements. One of * - `Emulated` (default): Emulate native scoping of styles. * - `Native`: Use the native encapsulation mechanism of the renderer. * - `ShadowDom`: Use modern [Shadow * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and * create a ShadowRoot for component's host element. * - `None`: Do not provide any template or style encapsulation. */ encapsulation: ViewEncapsulation; /** * Defines CSS styles to be stored on a renderer instance. */ styles: (string | any[])[]; /** * Defines arbitrary developer-defined data to be stored on a renderer instance. * This is useful for renderers that delegate to other renderers. */ data: { [kind: string]: any; }; } /** * An internal resolved representation of a factory function created by resolving `Provider`. * @publicApi */ export declare class ResolvedReflectiveFactory { /** * Factory function which can return an instance of an object represented by a key. */ factory: Function; /** * Arguments (dependencies) to the `factory` function. */ dependencies: ɵangular_packages_core_core_e[]; constructor( /** * Factory function which can return an instance of an object represented by a key. */ factory: Function, /** * Arguments (dependencies) to the `factory` function. */ dependencies: ɵangular_packages_core_core_e[]); } /** * An internal resolved representation of a `Provider` used by the `Injector`. * * @usageNotes * This is usually created automatically by `Injector.resolveAndCreate`. * * It can be created manually, as follows: * * ### Example * * ```typescript * var resolvedProviders = Injector.resolve([{ provide: 'message', useValue: 'Hello' }]); * var injector = Injector.fromResolvedProviders(resolvedProviders); * * expect(injector.get('message')).toEqual('Hello'); * ``` * * @publicApi */ export declare interface ResolvedReflectiveProvider { /** * A key, usually a `Type<any>`. */ key: ReflectiveKey; /** * Factory function which can return an instance of an object represented by a key. */ resolvedFactories: ResolvedReflectiveFactory[]; /** * Indicates if the provider is a multi-provider or a regular provider. */ multiProvider: boolean; } /** * Lazily retrieves the reference value from a forwardRef. * * Acts as the identity function when given a non-forward-ref value. * * @usageNotes * ### Example * * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'} * * @see `forwardRef` * @publicApi */ export declare function resolveForwardRef<T>(type: T): T; /** Subset of API needed for appending elements and text nodes. */ declare interface RNode { /** * Returns the parent Element, Document, or DocumentFragment */ parentNode: RNode | null; /** * Returns the parent Element if there is one */ parentElement: RElement | null; /** * Gets the Node immediately following this one in the parent's childNodes */ nextSibling: RNode | null; /** * Removes a child from the current node and returns the removed node * @param oldChild the child node to remove */ removeChild(oldChild: RNode): RNode; /** * Insert a child node. * * Used exclusively for adding View root nodes into ViewAnchor location. */ insertBefore(newChild: RNode, refChild: RNode | null, isViewRoot: boolean): void; /** * Append a child node. * * Used exclusively for building up DOM which are static (ie not View roots) */ appendChild(newChild: RNode): RNode; } /** * RootContext contains information which is shared for all components which * were bootstrapped with {@link renderComponent}. */ declare interface RootContext { /** * A function used for scheduling change detection in the future. Usually * this is `requestAnimationFrame`. */ scheduler: (workFn: () => void) => void; /** * A promise which is resolved when all components are considered clean (not dirty). * * This promise is overwritten every time a first call to {@link markDirty} is invoked. */ clean: Promise<null>; /** * RootComponents - The components that were instantiated by the call to * {@link renderComponent}. */ components: {}[]; /** * The player flushing handler to kick off all animations */ playerHandler: ɵPlayerHandler | null; /** * What render-related operations to run once a scheduler has been set */ flags: RootContextFlags; } declare const enum RootContextFlags { Empty = 0, DetectChanges = 1, FlushPlayers = 2 } declare interface RootData { injector: Injector; ngModule: NgModuleRef<any>; projectableNodes: any[][]; selectorOrNode: any; renderer: Renderer2; rendererFactory: RendererFactory2; errorHandler: ErrorHandler; sanitizer: Sanitizer; } declare interface RText extends RNode { textContent: string | null; } declare const SANITIZER = 12; /** * Sanitizer is used by the views to sanitize potentially dangerous values. * * @publicApi */ export declare abstract class Sanitizer { abstract sanitize(context: SecurityContext, value: {} | string | null): string | null; /** @nocollapse */ static ɵprov: never; } /** * Function used to sanitize the value before writing it into the renderer. */ declare type SanitizerFn = (value: any, tagName?: string, propName?: string) => string; /** * A schema definition associated with an NgModule. * * @see `@NgModule`, `CUSTOM_ELEMENTS_SCHEMA`, `NO_ERRORS_SCHEMA` * * @param name The name of a defined schema. * * @publicApi */ export declare interface SchemaMetadata { name: string; } /** * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly * handled. * * See DomSanitizer for more details on security in Angular applications. * * @publicApi */ export declare enum SecurityContext { NONE = 0, HTML = 1, STYLE = 2, SCRIPT = 3, URL = 4, RESOURCE_URL = 5 } /** Flags used to build up CssSelectors */ declare const enum SelectorFlags { /** Indicates this is the beginning of a new negative selector */ NOT = 1, /** Mode for matching attributes */ ATTRIBUTE = 2, /** Mode for matching tag names */ ELEMENT = 4, /** Mode for matching class names */ CLASS = 8 } /** * Type of the Self metadata. * * @publicApi */ export declare interface Self { } /** * Self decorator and metadata. * * @Annotation * @publicApi */ export declare const Self: SelfDecorator; /** * Type of the Self decorator / constructor function. * * @publicApi */ export declare interface SelfDecorator { /** * Parameter decorator to be used on constructor parameters, * which tells the DI framework to start dependency resolution from the local injector. * * Resolution works upward through the injector hierarchy, so the children * of this class must configure their own providers or be prepared for a null result. * * @usageNotes * * In the following example, the dependency can be resolved * by the local injector when instantiating the class itself, but not * when instantiating a child. * * <code-example path="core/di/ts/metadata_spec.ts" region="Self"> * </code-example> * * * @see `SkipSelf` * @see `Optional` * */ (): any; new (): Self; } /** * Set the {@link GetTestability} implementation used by the Angular testing framework. * @publicApi */ export declare function setTestabilityGetter(getter: GetTestability): void; /** * Represents a basic change from a previous to a new value for a single * property on a directive instance. Passed as a value in a * {@link SimpleChanges} object to the `ngOnChanges` hook. * * @see `OnChanges` * * @publicApi */ export declare class SimpleChange { previousValue: any; currentValue: any; firstChange: boolean; constructor(previousValue: any, currentValue: any, firstChange: boolean); /** * Check whether the new value is the first value assigned. */ isFirstChange(): boolean; } /** * A hashtable of changes represented by {@link SimpleChange} objects stored * at the declared property name they belong to on a Directive or Component. This is * the type passed to the `ngOnChanges` hook. * * @see `OnChanges` * * @publicApi */ export declare interface SimpleChanges { [propName: string]: SimpleChange; } /** * Type of the SkipSelf metadata. * * @publicApi */ export declare interface SkipSelf { } /** * SkipSelf decorator and metadata. * * @Annotation * @publicApi */ export declare const SkipSelf: SkipSelfDecorator; /** * Type of the SkipSelf decorator / constructor function. * * @publicApi */ export declare interface SkipSelfDecorator { /** * Parameter decorator to be used on constructor parameters, * which tells the DI framework to start dependency resolution from the parent injector. * Resolution works upward through the injector hierarchy, so the local injector * is not checked for a provider. * * @usageNotes * * In the following example, the dependency can be resolved when * instantiating a child, but not when instantiating the class itself. * * <code-example path="core/di/ts/metadata_spec.ts" region="SkipSelf"> * </code-example> * * Learn more in the * [Dependency Injection guide](guide/dependency-injection-in-action#skip). * * @see `Self` * @see `Optional` * */ (): any; new (): SkipSelf; } /** * Configures the `Injector` to return an instance of `useClass` for a token. * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * {@example core/di/ts/provider_spec.ts region='StaticClassProvider'} * * Note that following two providers are not equal: * * {@example core/di/ts/provider_spec.ts region='StaticClassProviderDifference'} * * ### Multi-value example * * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'} * * @publicApi */ export declare interface StaticClassProvider extends StaticClassSansProvider { /** * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`. */ provide: any; /** * When true, injector returns an array of instances. This is useful to allow multiple * providers spread across many files to provide configuration information to a common token. */ multi?: boolean; } /** * Configures the `Injector` to return an instance of `useClass` for a token. * Base for `StaticClassProvider` decorator. * * @publicApi */ export declare interface StaticClassSansProvider { /** * An optional class to instantiate for the `token`. By default, the `provide` * class is instantiated. */ useClass: Type<any>; /** * A list of `token`s to be resolved by the injector. The list of values is then * used as arguments to the `useClass` constructor. */ deps: any[]; } /** * Describes how an `Injector` should be configured as static (that is, without reflection). * A static provider provides tokens to an injector for various types of dependencies. * * @see [Injector.create()](/api/core/Injector#create). * @see ["Dependency Injection Guide"](guide/dependency-injection-providers). * * @publicApi */ export declare type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | any[]; /** * Used to intercept and sanitize style values before they are written to the renderer. * * This function is designed to be called in two modes. When a value is not provided * then the function will return a boolean whether a property will be sanitized later. * If a value is provided then the sanitized version of that will be returned. */ declare interface StyleSanitizeFn { (prop: string, value: string | ɵSafeValue | null, mode?: StyleSanitizeMode): any; } /** * A series of flags to instruct a style sanitizer to either validate * or sanitize a value. * * Because sanitization is dependent on the style property (i.e. style * sanitization for `width` is much different than for `background-image`) * the sanitization function (e.g. `StyleSanitizerFn`) needs to check a * property value first before it actually sanitizes any values. * * This enum exist to allow a style sanitization function to either only * do validation (check the property to see whether a value will be * sanitized or not) or to sanitize the value (or both). * * @publicApi */ declare const enum StyleSanitizeMode { /** Just check to see if the property is required to be sanitized or not */ ValidateProperty = 1, /** Skip checking the property; just sanitize the value */ SanitizeOnly = 2, /** Check the property and (if true) then sanitize the value */ ValidateAndSanitize = 3 } /** * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory * @publicApi * @deprecated the `string` form of `loadChildren` is deprecated, and `SystemJsNgModuleLoader` is * part of its implementation. See `LoadChildren` for more details. */ export declare class SystemJsNgModuleLoader implements NgModuleFactoryLoader { private _compiler; private _config; constructor(_compiler: Compiler, config?: SystemJsNgModuleLoaderConfig); load(path: string): Promise<NgModuleFactory<any>>; private loadAndCompile; private loadFactory; static ɵfac: ɵngcc0.ɵɵFactoryDef<SystemJsNgModuleLoader>; static ɵprov: ɵngcc0.ɵɵInjectableDef<SystemJsNgModuleLoader>; } /** * Configuration for SystemJsNgModuleLoader. * token. * * @publicApi * @deprecated the `string` form of `loadChildren` is deprecated, and `SystemJsNgModuleLoaderConfig` * is part of its implementation. See `LoadChildren` for more details. */ export declare abstract class SystemJsNgModuleLoaderConfig { /** * Prefix to add when computing the name of the factory module for a given module name. */ factoryPathPrefix: string; /** * Suffix to add when computing the name of the factory module for a given module name. */ factoryPathSuffix: string; } declare const T_HOST = 6; /** * A combination of: * - Attribute names and values. * - Special markers acting as flags to alter attributes processing. * - Parsed ngProjectAs selectors. */ declare type TAttributes = (string | ɵAttributeMarker | CssSelector)[]; /** * Constants that are associated with a view. Includes: * - Attribute arrays. * - Local definition arrays. */ declare type TConstants = (TAttributes | string)[]; /** Static data for an LContainer */ declare interface TContainerNode extends TNode { /** * Index in the data[] array. * * If it's -1, this is a dynamically created container node that isn't stored in * data[] (e.g. when you inject ViewContainerRef) . */ index: number; child: null; /** * Container nodes will have parents unless: * * - They are the first node of a component or embedded view * - They are dynamically created */ parent: ɵangular_packages_core_core_be | TElementContainerNode | null; tViews: TView | TView[] | null; projection: null; } /** * Static data that corresponds to the instance-specific data array on an LView. * * Each node's static data is stored in tData at the same index that it's stored * in the data array. Any nodes that do not have static data store a null value in * tData to avoid a sparse array. * * Each pipe's definition is stored here at the same index as its pipe instance in * the data array. * * Each host property's name is stored here at the same index as its value in the * data array. * * Each property binding name is stored here at the same index as its value in * the data array. If the binding is an interpolation, the static string values * are stored parallel to the dynamic values. Example: * * id="prefix {{ v0 }} a {{ v1 }} b {{ v2 }} suffix" * * LView | TView.data *------------------------ * v0 value | 'a' * v1 value | 'b' * v2 value | id � prefix � suffix * * Injector bloom filters are also stored here. */ declare type TData = (TNode | ɵPipeDef<any> | ɵDirectiveDef<any> | ɵComponentDef<any> | number | TStylingRange | TStylingKey | Type<any> | InjectionToken<any> | TI18n | I18nUpdateOpCodes | null | string)[]; /** Static data for an <ng-container> */ declare interface TElementContainerNode extends TNode { /** Index in the LView[] array. */ index: number; child: ɵangular_packages_core_core_be | TTextNode | TContainerNode | TElementContainerNode | TProjectionNode | null; parent: ɵangular_packages_core_core_be | TElementContainerNode | null; tViews: null; projection: null; } /** * Represents an embedded template that can be used to instantiate embedded views. * To instantiate embedded views based on a template, use the `ViewContainerRef` * method `createEmbeddedView()`. * * Access a `TemplateRef` instance by placing a directive on an `<ng-template>` * element (or directive prefixed with `*`). The `TemplateRef` for the embedded view * is injected into the constructor of the directive, * using the `TemplateRef` token. * * You can also use a `Query` to find a `TemplateRef` associated with * a component or a directive. * * @see `ViewContainerRef` * @see [Navigate the Component Tree with DI](guide/dependency-injection-navtree) * * @publicApi */ export declare abstract class TemplateRef<C> { /** * The anchor element in the parent view for this embedded view. * * The data-binding and injection contexts of embedded views created from this `TemplateRef` * inherit from the contexts of this location. * * Typically new embedded views are attached to the view container of this location, but in * advanced use-cases, the view can be attached to a different container while keeping the * data-binding and injection context from the original location. * */ abstract get elementRef(): ElementRef; /** * Instantiates an embedded view based on this template, * and attaches it to the view container. * @param context The data-binding context of the embedded view, as declared * in the `<ng-template>` usage. * @returns The new embedded view object. */ abstract createEmbeddedView(context: C): EmbeddedViewRef<C>; } /** * The Testability service provides testing hooks that can be accessed from * the browser and by services such as Protractor. Each bootstrapped Angular * application on the page will have an instance of Testability. * @publicApi */ export declare class Testability implements PublicTestability { private _ngZone; private _pendingCount; private _isZoneStable; private _callbacks; private taskTrackingZone; constructor(_ngZone: NgZone); private _watchAngularEvents; /** * Increases the number of pending request * @deprecated pending requests are now tracked with zones. */ increasePendingRequestCount(): number; /** * Decreases the number of pending request * @deprecated pending requests are now tracked with zones */ decreasePendingRequestCount(): number; /** * Whether an associated application is stable */ isStable(): boolean; private _runCallbacksIfReady; private getPendingTasks; private addCallback; /** * Wait for the application to be stable with a timeout. If the timeout is reached before that * happens, the callback receives a list of the macro tasks that were pending, otherwise null. * * @param doneCb The callback to invoke when Angular is stable or the timeout expires * whichever comes first. * @param timeout Optional. The maximum time to wait for Angular to become stable. If not * specified, whenStable() will wait forever. * @param updateCb Optional. If specified, this callback will be invoked whenever the set of * pending macrotasks changes. If this callback returns true doneCb will not be invoked * and no further updates will be issued. */ whenStable(doneCb: Function, timeout?: number, updateCb?: Function): void; /** * Get the number of pending requests * @deprecated pending requests are now tracked with zones */ getPendingRequestCount(): number; /** * Find providers by name * @param using The root element to search from * @param provider The name of binding variable * @param exactMatch Whether using exactMatch */ findProviders(using: any, provider: string, exactMatch: boolean): any[]; static ɵfac: ɵngcc0.ɵɵFactoryDef<Testability>; static ɵprov: ɵngcc0.ɵɵInjectableDef<Testability>; } /** * A global registry of {@link Testability} instances for specific elements. * @publicApi */ export declare class TestabilityRegistry { constructor(); /** * Registers an application with a testability hook so that it can be tracked * @param token token of application, root element * @param testability Testability hook */ registerApplication(token: any, testability: Testability): void; /** * Unregisters an application. * @param token token of application, root element */ unregisterApplication(token: any): void; /** * Unregisters all applications */ unregisterAllApplications(): void; /** * Get a testability hook associated with the application * @param elem root element */ getTestability(elem: any): Testability | null; /** * Get all registered testabilities */ getAllTestabilities(): Testability[]; /** * Get all registered applications(root elements) */ getAllRootElements(): any[]; /** * Find testability of a node in the Tree * @param elem node * @param findInAncestors whether finding testability in ancestors if testability was not found in * current node */ findTestabilityInTree(elem: Node, findInAncestors?: boolean): Testability | null; static ɵfac: ɵngcc0.ɵɵFactoryDef<TestabilityRegistry>; static ɵprov: ɵngcc0.ɵɵInjectableDef<TestabilityRegistry>; } declare interface TextDef { prefix: string; } /** * Store information for the i18n translation block. */ declare interface TI18n { /** * Number of slots to allocate in expando. * * This is the max number of DOM elements which will be created by this i18n + ICU blocks. When * the DOM elements are being created they are stored in the EXPANDO, so that update OpCodes can * write into them. */ vars: number; /** * A set of OpCodes which will create the Text Nodes and ICU anchors for the translation blocks. * * NOTE: The ICU anchors are filled in with ICU Update OpCode. */ create: I18nMutateOpCodes; /** * A set of OpCodes which will be executed on each change detection to determine if any changes to * DOM are required. */ update: I18nUpdateOpCodes; /** * A list of ICUs in a translation block (or `null` if block has no ICUs). * * Example: * Given: `<div i18n>You have {count, plural, ...} and {state, switch, ...}</div>` * There would be 2 ICUs in this array. * 1. `{count, plural, ...}` * 2. `{state, switch, ...}` */ icus: TIcu[] | null; } declare interface TIcu { /** * Defines the ICU type of `select` or `plural` */ type: IcuType; /** * Number of slots to allocate in expando for each case. * * This is the max number of DOM elements which will be created by this i18n + ICU blocks. When * the DOM elements are being created they are stored in the EXPANDO, so that update OpCodes can * write into them. */ vars: number[]; /** * An optional array of child/sub ICUs. * * In case of nested ICUs such as: * ``` * {�0�, plural, * =0 {zero} * other {�0� {�1�, select, * cat {cats} * dog {dogs} * other {animals} * }! * } * } * ``` * When the parent ICU is changing it must clean up child ICUs as well. For this reason it needs * to know which child ICUs to run clean up for as well. * * In the above example this would be: * ```ts * [ * [], // `=0` has no sub ICUs * [1], // `other` has one subICU at `1`st index. * ] * ``` * * The reason why it is Array of Arrays is because first array represents the case, and second * represents the child ICUs to clean up. There may be more than one child ICUs per case. */ childIcus: number[][]; /** * A list of case values which the current ICU will try to match. * * The last value is `other` */ cases: any[]; /** * A set of OpCodes to apply in order to build up the DOM render tree for the ICU */ create: I18nMutateOpCodes[]; /** * A set of OpCodes to apply in order to destroy the DOM render tree for the ICU. */ remove: I18nMutateOpCodes[]; /** * A set of OpCodes to apply in order to update the DOM render tree for the ICU bindings. */ update: I18nUpdateOpCodes[]; } /** * Binding data (flyweight) for a particular node that is shared between all templates * of a specific type. * * If a property is: * - PropertyAliases: that property's data was generated and this is it * - Null: that property's data was already generated and nothing was found. * - Undefined: that property's data has not yet been generated * * see: https://en.wikipedia.org/wiki/Flyweight_pattern for more on the Flyweight pattern */ declare interface TNode { /** The type of the TNode. See TNodeType. */ type: TNodeType; /** * Index of the TNode in TView.data and corresponding native element in LView. * * This is necessary to get from any TNode to its corresponding native element when * traversing the node tree. * * If index is -1, this is a dynamically created container node or embedded view node. */ index: number; /** * The index of the closest injector in this node's LView. * * If the index === -1, there is no injector on this node or any ancestor node in this view. * * If the index !== -1, it is the index of this node's injector OR the index of a parent injector * in the same view. We pass the parent injector index down the node tree of a view so it's * possible to find the parent injector without walking a potentially deep node tree. Injector * indices are not set across view boundaries because there could be multiple component hosts. * * If tNode.injectorIndex === tNode.parent.injectorIndex, then the index belongs to a parent * injector. */ injectorIndex: number; /** * Stores starting index of the directives. */ directiveStart: number; /** * Stores final exclusive index of the directives. */ directiveEnd: number; /** * Stores the last directive which had a styling instruction. * * Initial value of this is `-1` which means that no `hostBindings` styling instruction has * executed. As `hostBindings` instructions execute they set the value to the index of the * `DirectiveDef` which contained the last `hostBindings` styling instruction. * * Valid values are: * - `-1` No `hostBindings` instruction has executed. * - `directiveStart <= directiveStylingLast < directiveEnd`: Points to the `DirectiveDef` of the * last styling instruction which executed in the `hostBindings`. * * This data is needed so that styling instructions know which static styling data needs to be * collected from the `DirectiveDef.hostAttrs`. A styling instruction needs to collect all data * since last styling instruction. */ directiveStylingLast: number; /** * Stores indexes of property bindings. This field is only set in the ngDevMode and holds indexes * of property bindings so TestBed can get bound property metadata for a given node. */ propertyBindings: number[] | null; /** * Stores if Node isComponent, isProjected, hasContentQuery, hasClassInput and hasStyleInput etc. */ flags: TNodeFlags; /** * This number stores two values using its bits: * * - the index of the first provider on that node (first 16 bits) * - the count of view providers from the component on this node (last 16 bits) */ providerIndexes: TNodeProviderIndexes; /** The tag name associated with this node. */ tagName: string | null; /** * Attributes associated with an element. We need to store attributes to support various use-cases * (attribute injection, content projection with selectors, directives matching). * Attributes are stored statically because reading them from the DOM would be way too slow for * content projection and queries. * * Since attrs will always be calculated first, they will never need to be marked undefined by * other instructions. * * For regular attributes a name of an attribute and its value alternate in the array. * e.g. ['role', 'checkbox'] * This array can contain flags that will indicate "special attributes" (attributes with * namespaces, attributes extracted from bindings and outputs). */ attrs: TAttributes | null; /** * Same as `TNode.attrs` but contains merged data across all directive host bindings. * * We need to keep `attrs` as unmerged so that it can be used for attribute selectors. * We merge attrs here so that it can be used in a performant way for initial rendering. * * The `attrs` are merged in first pass in following order: * - Component's `hostAttrs` * - Directives' `hostAttrs` * - Template `TNode.attrs` associated with the current `TNode`. */ mergedAttrs: TAttributes | null; /** * A set of local names under which a given element is exported in a template and * visible to queries. An entry in this array can be created for different reasons: * - an element itself is referenced, ex.: `<div #foo>` * - a component is referenced, ex.: `<my-cmpt #foo>` * - a directive is referenced, ex.: `<my-cmpt #foo="directiveExportAs">`. * * A given element might have different local names and those names can be associated * with a directive. We store local names at even indexes while odd indexes are reserved * for directive index in a view (or `-1` if there is no associated directive). * * Some examples: * - `<div #foo>` => `["foo", -1]` * - `<my-cmpt #foo>` => `["foo", myCmptIdx]` * - `<my-cmpt #foo #bar="directiveExportAs">` => `["foo", myCmptIdx, "bar", directiveIdx]` * - `<div #foo #bar="directiveExportAs">` => `["foo", -1, "bar", directiveIdx]` */ localNames: (string | number)[] | null; /** Information about input properties that need to be set once from attribute data. */ initialInputs: InitialInputData | null | undefined; /** * Input data for all directives on this node. `null` means that there are no directives with * inputs on this node. */ inputs: PropertyAliases | null; /** * Output data for all directives on this node. `null` means that there are no directives with * outputs on this node. */ outputs: PropertyAliases | null; /** * The TView or TViews attached to this node. * * If this TNode corresponds to an LContainer with inline views, the container will * need to store separate static data for each of its view blocks (TView[]). Otherwise, * nodes in inline views with the same index as nodes in their parent views will overwrite * each other, as they are in the same template. * * Each index in this array corresponds to the static data for a certain * view. So if you had V(0) and V(1) in a container, you might have: * * [ * [{tagName: 'div', attrs: ...}, null], // V(0) TView * [{tagName: 'button', attrs ...}, null] // V(1) TView * * If this TNode corresponds to an LContainer with a template (e.g. structural * directive), the template's TView will be stored here. * * If this TNode corresponds to an element, tViews will be null . */ tViews: TView | TView[] | null; /** * The next sibling node. Necessary so we can propagate through the root nodes of a view * to insert them or remove them from the DOM. */ next: TNode | null; /** * The next projected sibling. Since in Angular content projection works on the node-by-node basis * the act of projecting nodes might change nodes relationship at the insertion point (target * view). At the same time we need to keep initial relationship between nodes as expressed in * content view. */ projectionNext: TNode | null; /** * First child of the current node. * * For component nodes, the child will always be a ContentChild (in same view). * For embedded view nodes, the child will be in their child view. */ child: TNode | null; /** * Parent node (in the same view only). * * We need a reference to a node's parent so we can append the node to its parent's native * element at the appropriate time. * * If the parent would be in a different view (e.g. component host), this property will be null. * It's important that we don't try to cross component boundaries when retrieving the parent * because the parent will change (e.g. index, attrs) depending on where the component was * used (and thus shouldn't be stored on TNode). In these cases, we retrieve the parent through * LView.node instead (which will be instance-specific). * * If this is an inline view node (V), the parent will be its container. */ parent: ɵangular_packages_core_core_be | TContainerNode | null; /** * List of projected TNodes for a given component host element OR index into the said nodes. * * For easier discussion assume this example: * `<parent>`'s view definition: * ``` * <child id="c1">content1</child> * <child id="c2"><span>content2</span></child> * ``` * `<child>`'s view definition: * ``` * <ng-content id="cont1"></ng-content> * ``` * * If `Array.isArray(projection)` then `TNode` is a host element: * - `projection` stores the content nodes which are to be projected. * - The nodes represent categories defined by the selector: For example: * `<ng-content/><ng-content select="abc"/>` would represent the heads for `<ng-content/>` * and `<ng-content select="abc"/>` respectively. * - The nodes we store in `projection` are heads only, we used `.next` to get their * siblings. * - The nodes `.next` is sorted/rewritten as part of the projection setup. * - `projection` size is equal to the number of projections `<ng-content>`. The size of * `c1` will be `1` because `<child>` has only one `<ng-content>`. * - we store `projection` with the host (`c1`, `c2`) rather than the `<ng-content>` (`cont1`) * because the same component (`<child>`) can be used in multiple locations (`c1`, `c2`) and as * a result have different set of nodes to project. * - without `projection` it would be difficult to efficiently traverse nodes to be projected. * * If `typeof projection == 'number'` then `TNode` is a `<ng-content>` element: * - `projection` is an index of the host's `projection`Nodes. * - This would return the first head node to project: * `getHost(currentTNode).projection[currentTNode.projection]`. * - When projecting nodes the parent node retrieved may be a `<ng-content>` node, in which case * the process is recursive in nature. * * If `projection` is of type `RNode[][]` than we have a collection of native nodes passed as * projectable nodes during dynamic component creation. */ projection: (TNode | RNode[])[] | number | null; /** * A collection of all style static values for an element. * * This field will be populated if and when: * * - There are one or more initial styles on an element (e.g. `<div style="width:200px">`) */ styles: string | null; /** * A `KeyValueArray` version of residual `styles`. * * When there are styling instructions than each instruction stores the static styling * which is of lower priority than itself. This means that there may be a higher priority styling * than the instruction. * * Imagine: * ``` * <div style="color: highest;" my-dir> * * @Directive({ * host: { * style: 'color: lowest; ', * '[styles.color]': 'exp' // ɵɵstyleProp('color', ctx.exp); * } * }) * ``` * * In the above case: * - `color: lowest` is stored with `ɵɵstyleProp('color', ctx.exp);` instruction * - `color: highest` is the residual and is stored here. * * - `undefined': not initialized. * - `null`: initialized but `styles` is `null` * - `KeyValueArray`: parsed version of `styles`. */ residualStyles: KeyValueArray<any> | undefined | null; /** * A collection of all class static values for an element. * * This field will be populated if and when: * * - There are one or more initial classes on an element (e.g. `<div class="one two three">`) */ classes: string | null; /** * A `KeyValueArray` version of residual `classes`. * * Same as `TNode.residualStyles` but for classes. * * - `undefined': not initialized. * - `null`: initialized but `classes` is `null` * - `KeyValueArray`: parsed version of `classes`. */ residualClasses: KeyValueArray<any> | undefined | null; /** * Stores the head/tail index of the class bindings. * * - If no bindings, the head and tail will both be 0. * - If there are template bindings, stores the head/tail of the class bindings in the template. * - If no template bindings but there are host bindings, the head value will point to the last * host binding for "class" (not the head of the linked list), tail will be 0. * * See: `style_binding_list.ts` for details. * * This is used by `insertTStylingBinding` to know where the next styling binding should be * inserted so that they can be sorted in priority order. */ classBindings: TStylingRange; /** * Stores the head/tail index of the class bindings. * * - If no bindings, the head and tail will both be 0. * - If there are template bindings, stores the head/tail of the style bindings in the template. * - If no template bindings but there are host bindings, the head value will point to the last * host binding for "style" (not the head of the linked list), tail will be 0. * * See: `style_binding_list.ts` for details. * * This is used by `insertTStylingBinding` to know where the next styling binding should be * inserted so that they can be sorted in priority order. */ styleBindings: TStylingRange; } /** * Corresponds to the TNode.flags property. */ declare const enum TNodeFlags { /** Bit #1 - This bit is set if the node is a host for any directive (including a component) */ isDirectiveHost = 1, /** * Bit #2 - This bit is set if the node is a host for a component. * * Setting this bit implies that the `isDirectiveHost` bit is set as well. * */ isComponentHost = 2, /** Bit #3 - This bit is set if the node has been projected */ isProjected = 4, /** Bit #4 - This bit is set if any directive on this node has content queries */ hasContentQuery = 8, /** Bit #5 - This bit is set if the node has any "class" inputs */ hasClassInput = 16, /** Bit #6 - This bit is set if the node has any "style" inputs */ hasStyleInput = 32, /** Bit #7 This bit is set if the node has been detached by i18n */ isDetached = 64, /** * Bit #8 - This bit is set if the node has directives with host bindings. * * This flags allows us to guard host-binding logic and invoke it only on nodes * that actually have directives with host bindings. */ hasHostBindings = 128 } /** * Corresponds to the TNode.providerIndexes property. */ declare const enum TNodeProviderIndexes { /** The index of the first provider on this node is encoded on the least significant bits */ ProvidersStartIndexMask = 65535, /** The count of view providers from the component on this node is encoded on the 16 most significant bits */ CptViewProvidersCountShift = 16, CptViewProvidersCountShifter = 65536 } /** * TNodeType corresponds to the {@link TNode} `type` property. */ declare const enum TNodeType { /** * The TNode contains information about an {@link LContainer} for embedded views. */ Container = 0, /** * The TNode contains information about an `<ng-content>` projection */ Projection = 1, /** * The TNode contains information about an {@link LView} */ View = 2, /** * The TNode contains information about a DOM element aka {@link RNode}. */ Element = 3, /** * The TNode contains information about an `<ng-container>` element {@link RNode}. */ ElementContainer = 4, /** * The TNode contains information about an ICU comment used in `i18n`. */ IcuContainer = 5 } /** * Type representing a set of TNodes that can have local refs (`#foo`) placed on them. */ declare type TNodeWithLocalRefs = TContainerNode | ɵangular_packages_core_core_be | TElementContainerNode; /** Static data for an LProjectionNode */ declare interface TProjectionNode extends TNode { /** Index in the data[] array */ child: null; /** * Projection nodes will have parents unless they are the first node of a component * or embedded view (which means their parent is in a different view and must be * retrieved using LView.node). */ parent: ɵangular_packages_core_core_be | TElementContainerNode | null; tViews: null; /** Index of the projection node. (See TNode.projection for more info.) */ projection: number; } /** * TQueries represent a collection of individual TQuery objects tracked in a given view. Most of the * methods on this interface are simple proxy methods to the corresponding functionality on TQuery. */ declare interface TQueries { /** * Adds a new TQuery to a collection of queries tracked in a given view. * @param tQuery */ track(tQuery: TQuery): void; /** * Returns a TQuery instance for at the given index in the queries array. * @param index */ getByIndex(index: number): TQuery; /** * Returns the number of queries tracked in a given view. */ length: number; /** * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding * `elementStart` on each and every TQuery. * @param tView * @param tNode */ elementStart(tView: TView, tNode: TNode): void; /** * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding * `elementEnd` on each and every TQuery. * @param tNode */ elementEnd(tNode: TNode): void; /** * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding * `template` on each and every TQuery. * @param tView * @param tNode */ template(tView: TView, tNode: TNode): void; /** * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding * `embeddedTView` on each and every TQuery. * @param tNode */ embeddedTView(tNode: TNode): TQueries | null; } /** * TQuery objects represent all the query-related data that remain the same from one view instance * to another and can be determined on the very first template pass. Most notably TQuery holds all * the matches for a given view. */ declare interface TQuery { /** * Query metadata extracted from query annotations. */ metadata: TQueryMetadata; /** * Index of a query in a declaration view in case of queries propagated to en embedded view, -1 * for queries declared in a given view. We are storing this index so we can find a parent query * to clone for an embedded view (when an embedded view is created). */ indexInDeclarationView: number; /** * Matches collected on the first template pass. Each match is a pair of: * - TNode index; * - match index; * * A TNode index can be either: * - a positive number (the most common case) to indicate a matching TNode; * - a negative number to indicate that a given query is crossing a <ng-template> element and * results from views created based on TemplateRef should be inserted at this place. * * A match index is a number used to find an actual value (for a given node) when query results * are materialized. This index can have one of the following values: * - -2 - indicates that we need to read a special token (TemplateRef, ViewContainerRef etc.); * - -1 - indicates that we need to read a default value based on the node type (TemplateRef for * ng-template and ElementRef for other elements); * - a positive number - index of an injectable to be read from the element injector. */ matches: number[] | null; /** * A flag indicating if a given query crosses an <ng-template> element. This flag exists for * performance reasons: we can notice that queries not crossing any <ng-template> elements will * have matches from a given view only (and adapt processing accordingly). */ crossesNgTemplate: boolean; /** * A method call when a given query is crossing an element (or element container). This is where a * given TNode is matched against a query predicate. * @param tView * @param tNode */ elementStart(tView: TView, tNode: TNode): void; /** * A method called when processing the elementEnd instruction - this is mostly useful to determine * if a given content query should match any nodes past this point. * @param tNode */ elementEnd(tNode: TNode): void; /** * A method called when processing the template instruction. This is where a * given TContainerNode is matched against a query predicate. * @param tView * @param tNode */ template(tView: TView, tNode: TNode): void; /** * A query-related method called when an embedded TView is created based on the content of a * <ng-template> element. We call this method to determine if a given query should be propagated * to the embedded view and if so - return a cloned TQuery for this embedded view. * @param tNode * @param childQueryIndex */ embeddedTView(tNode: TNode, childQueryIndex: number): TQuery | null; } /** * An object representing query metadata extracted from query annotations. */ declare interface TQueryMetadata { predicate: Type<any> | string[]; descendants: boolean; read: any; isStatic: boolean; } /** * An optional function passed into the `NgForOf` directive that defines how to track * changes for items in an iterable. * The function takes the iteration index and item ID. * When supplied, Angular tracks changes by the return value of the function. * * @publicApi */ export declare interface TrackByFunction<T> { (index: number, item: T): any; } /** * Use this token at bootstrap to provide the content of your translation file (`xtb`, * `xlf` or `xlf2`) when you want to translate your application in another language. * * See the [i18n guide](guide/i18n#merge) for more information. * * @usageNotes * ### Example * * ```typescript * import { TRANSLATIONS } from '@angular/core'; * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; * import { AppModule } from './app/app.module'; * * // content of your translation file * const translations = '....'; * * platformBrowserDynamic().bootstrapModule(AppModule, { * providers: [{provide: TRANSLATIONS, useValue: translations }] * }); * ``` * * @publicApi */ export declare const TRANSLATIONS: InjectionToken<string>; /** * Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`, * `xlf` or `xlf2`. * * See the [i18n guide](guide/i18n#merge) for more information. * * @usageNotes * ### Example * * ```typescript * import { TRANSLATIONS_FORMAT } from '@angular/core'; * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; * import { AppModule } from './app/app.module'; * * platformBrowserDynamic().bootstrapModule(AppModule, { * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }] * }); * ``` * * @publicApi */ export declare const TRANSLATIONS_FORMAT: InjectionToken<string>; /** * Value stored in the `TData` which is needed to re-concatenate the styling. * * See: `TStylingKeyPrimitive` and `TStylingStatic` */ declare type TStylingKey = TStylingKeyPrimitive | TStylingStatic; /** * The primitive portion (`TStylingStatic` removed) of the value stored in the `TData` which is * needed to re-concatenate the styling. * * - `string`: Stores the property name. Used with `ɵɵstyleProp`/`ɵɵclassProp` instruction. * - `null`: Represents map, so there is no name. Used with `ɵɵstyleMap`/`ɵɵclassMap`. * - `false`: Represents an ignore case. This happens when `ɵɵstyleProp`/`ɵɵclassProp` instruction * is combined with directive which shadows its input `@Input('class')`. That way the binding * should not participate in the styling resolution. */ declare type TStylingKeyPrimitive = string | null | false; /** * This is a branded number which contains previous and next index. * * When we come across styling instructions we need to store the `TStylingKey` in the correct * order so that we can re-concatenate the styling value in the desired priority. * * The insertion can happen either at the: * - end of template as in the case of coming across additional styling instruction in the template * - in front of the template in the case of coming across additional instruction in the * `hostBindings`. * * We use `TStylingRange` to store the previous and next index into the `TData` where the template * bindings can be found. * * - bit 0 is used to mark that the previous index has a duplicate for current value. * - bit 1 is used to mark that the next index has a duplicate for the current value. * - bits 2-16 are used to encode the next/tail of the template. * - bits 17-32 are used to encode the previous/head of template. * * NODE: *duplicate* false implies that it is statically known that this binding will not collide * with other bindings and therefore there is no need to check other bindings. For example the * bindings in `<div [style.color]="exp" [style.width]="exp">` will never collide and will have * their bits set accordingly. Previous duplicate means that we may need to check previous if the * current binding is `null`. Next duplicate means that we may need to check next bindings if the * current binding is not `null`. * * NOTE: `0` has special significance and represents `null` as in no additional pointer. */ declare interface TStylingRange { __brand__: 'TStylingRange'; } /** * Store the static values for the styling binding. * * The `TStylingStatic` is just `KeyValueArray` where key `""` (stored at location 0) contains the * `TStylingKey` (stored at location 1). In other words this wraps the `TStylingKey` such that the * `""` contains the wrapped value. * * When instructions are resolving styling they may need to look forward or backwards in the linked * list to resolve the value. For this reason we have to make sure that he linked list also contains * the static values. However the list only has space for one item per styling instruction. For this * reason we store the static values here as part of the `TStylingKey`. This means that the * resolution function when looking for a value needs to first look at the binding value, and than * at `TStylingKey` (if it exists). * * Imagine we have: * * ``` * <div class="TEMPLATE" my-dir> * * @Directive({ * host: { * class: 'DIR', * '[class.dynamic]': 'exp' // ɵɵclassProp('dynamic', ctx.exp); * } * }) * ``` * * In the above case the linked list will contain one item: * * ``` * // assume binding location: 10 for `ɵɵclassProp('dynamic', ctx.exp);` * tData[10] = <TStylingStatic>[ * '': 'dynamic', // This is the wrapped value of `TStylingKey` * 'DIR': true, // This is the default static value of directive binding. * ]; * tData[10 + 1] = 0; // We don't have prev/next. * * lView[10] = undefined; // assume `ctx.exp` is `undefined` * lView[10 + 1] = undefined; // Just normalized `lView[10]` * ``` * * So when the function is resolving styling value, it first needs to look into the linked list * (there is none) and than into the static `TStylingStatic` too see if there is a default value for * `dynamic` (there is not). Therefore it is safe to remove it. * * If setting `true` case: * ``` * lView[10] = true; // assume `ctx.exp` is `true` * lView[10 + 1] = true; // Just normalized `lView[10]` * ``` * So when the function is resolving styling value, it first needs to look into the linked list * (there is none) and than into `TNode.residualClass` (TNode.residualStyle) which contains * ``` * tNode.residualClass = [ * 'TEMPLATE': true, * ]; * ``` * * This means that it is safe to add class. */ declare interface TStylingStatic extends KeyValueArray<any> { } /** Static data for a text node */ declare interface TTextNode extends TNode { /** Index in the data[] array */ index: number; child: null; /** * Text nodes will have parents unless they are the first node of a component or * embedded view (which means their parent is in a different view and must be * retrieved using LView.node). */ parent: ɵangular_packages_core_core_be | TElementContainerNode | null; tViews: null; projection: null; } declare const TVIEW = 1; /** * The static data for an LView (shared between all templates of a * given type). * * Stored on the `ComponentDef.tView`. */ declare interface TView { /** * Type of `TView` (`Root`|`Component`|`Embedded`). */ type: TViewType; /** * ID for inline views to determine whether a view is the same as the previous view * in a certain position. If it's not, we know the new view needs to be inserted * and the one that exists needs to be removed (e.g. if/else statements) * * If this is -1, then this is a component view or a dynamically created view. */ readonly id: number; /** * This is a blueprint used to generate LView instances for this TView. Copying this * blueprint is faster than creating a new LView from scratch. */ blueprint: ɵangular_packages_core_core_bo; /** * The template function used to refresh the view of dynamically created views * and components. Will be null for inline views. */ template: ComponentTemplate<{}> | null; /** * A function containing query-related instructions. */ viewQuery: ViewQueriesFunction<{}> | null; /** * Pointer to the host `TNode` (not part of this TView). * * If this is a `TViewNode` for an `LViewNode`, this is an embedded view of a container. * We need this pointer to be able to efficiently find this node when inserting the view * into an anchor. * * If this is a `TElementNode`, this is the view of a root component. It has exactly one * root TNode. * * If this is null, this is the view of a component that is not at root. We do not store * the host TNodes for child component views because they can potentially have several * different host TNodes, depending on where the component is being used. These host * TNodes cannot be shared (due to different indices, etc). */ node: TViewNode | ɵangular_packages_core_core_be | null; /** Whether or not this template has been processed in creation mode. */ firstCreatePass: boolean; /** * Whether or not this template has been processed in update mode (e.g. change detected) * * `firstUpdatePass` is used by styling to set up `TData` to contain metadata about the styling * instructions. (Mainly to build up a linked list of styling priority order.) * * Typically this function gets cleared after first execution. If exception is thrown then this * flag can remain turned un until there is first successful (no exception) pass. This means that * individual styling instructions keep track of if they have already been added to the linked * list to prevent double adding. */ firstUpdatePass: boolean; /** Static data equivalent of LView.data[]. Contains TNodes, PipeDefInternal or TI18n. */ data: TData; /** * The binding start index is the index at which the data array * starts to store bindings only. Saving this value ensures that we * will begin reading bindings at the correct point in the array when * we are in update mode. * * -1 means that it has not been initialized. */ bindingStartIndex: number; /** * The index where the "expando" section of `LView` begins. The expando * section contains injectors, directive instances, and host binding values. * Unlike the "decls" and "vars" sections of `LView`, the length of this * section cannot be calculated at compile-time because directives are matched * at runtime to preserve locality. * * We store this start index so we know where to start checking host bindings * in `setHostBindings`. */ expandoStartIndex: number; /** * Whether or not there are any static view queries tracked on this view. * * We store this so we know whether or not we should do a view query * refresh after creation mode to collect static query results. */ staticViewQueries: boolean; /** * Whether or not there are any static content queries tracked on this view. * * We store this so we know whether or not we should do a content query * refresh after creation mode to collect static query results. */ staticContentQueries: boolean; /** * A reference to the first child node located in the view. */ firstChild: TNode | null; /** * Set of instructions used to process host bindings efficiently. * * See VIEW_DATA.md for more information. */ expandoInstructions: ExpandoInstructions | null; /** * Full registry of directives and components that may be found in this view. * * It's necessary to keep a copy of the full def list on the TView so it's possible * to render template functions without a host component. */ directiveRegistry: DirectiveDefList | null; /** * Full registry of pipes that may be found in this view. * * The property is either an array of `PipeDefs`s or a function which returns the array of * `PipeDefs`s. The function is necessary to be able to support forward declarations. * * It's necessary to keep a copy of the full def list on the TView so it's possible * to render template functions without a host component. */ pipeRegistry: PipeDefList | null; /** * Array of ngOnInit, ngOnChanges and ngDoCheck hooks that should be executed for this view in * creation mode. * * Even indices: Directive index * Odd indices: Hook function */ preOrderHooks: HookData | null; /** * Array of ngOnChanges and ngDoCheck hooks that should be executed for this view in update mode. * * Even indices: Directive index * Odd indices: Hook function */ preOrderCheckHooks: HookData | null; /** * Array of ngAfterContentInit and ngAfterContentChecked hooks that should be executed * for this view in creation mode. * * Even indices: Directive index * Odd indices: Hook function */ contentHooks: HookData | null; /** * Array of ngAfterContentChecked hooks that should be executed for this view in update * mode. * * Even indices: Directive index * Odd indices: Hook function */ contentCheckHooks: HookData | null; /** * Array of ngAfterViewInit and ngAfterViewChecked hooks that should be executed for * this view in creation mode. * * Even indices: Directive index * Odd indices: Hook function */ viewHooks: HookData | null; /** * Array of ngAfterViewChecked hooks that should be executed for this view in * update mode. * * Even indices: Directive index * Odd indices: Hook function */ viewCheckHooks: HookData | null; /** * Array of ngOnDestroy hooks that should be executed when this view is destroyed. * * Even indices: Directive index * Odd indices: Hook function */ destroyHooks: HookData | null; /** * When a view is destroyed, listeners need to be released and outputs need to be * unsubscribed. This cleanup array stores both listener data (in chunks of 4) * and output data (in chunks of 2) for a particular view. Combining the arrays * saves on memory (70 bytes per array) and on a few bytes of code size (for two * separate for loops). * * If it's a native DOM listener or output subscription being stored: * 1st index is: event name `name = tView.cleanup[i+0]` * 2nd index is: index of native element or a function that retrieves global target (window, * document or body) reference based on the native element: * `typeof idxOrTargetGetter === 'function'`: global target getter function * `typeof idxOrTargetGetter === 'number'`: index of native element * * 3rd index is: index of listener function `listener = lView[CLEANUP][tView.cleanup[i+2]]` * 4th index is: `useCaptureOrIndx = tView.cleanup[i+3]` * `typeof useCaptureOrIndx == 'boolean' : useCapture boolean * `typeof useCaptureOrIndx == 'number': * `useCaptureOrIndx >= 0` `removeListener = LView[CLEANUP][useCaptureOrIndx]` * `useCaptureOrIndx < 0` `subscription = LView[CLEANUP][-useCaptureOrIndx]` * * If it's an output subscription or query list destroy hook: * 1st index is: output unsubscribe function / query list destroy function * 2nd index is: index of function context in LView.cleanupInstances[] * `tView.cleanup[i+0].call(lView[CLEANUP][tView.cleanup[i+1]])` */ cleanup: any[] | null; /** * A list of element indices for child components that will need to be * refreshed when the current view has finished its check. These indices have * already been adjusted for the HEADER_OFFSET. * */ components: number[] | null; /** * A collection of queries tracked in a given view. */ queries: TQueries | null; /** * An array of indices pointing to directives with content queries alongside with the * corresponding * query index. Each entry in this array is a tuple of: * - index of the first content query index declared by a given directive; * - index of a directive. * * We are storing those indexes so we can refresh content queries as part of a view refresh * process. */ contentQueries: number[] | null; /** * Set of schemas that declare elements to be allowed inside the view. */ schemas: SchemaMetadata[] | null; /** * Array of constants for the view. Includes attribute arrays, local definition arrays etc. * Used for directive matching, attribute bindings, local definitions and more. */ consts: TConstants | null; } /** Static data for a view */ declare interface TViewNode extends TNode { /** If -1, it's a dynamically created view. Otherwise, it is the view block ID. */ index: number; child: ɵangular_packages_core_core_be | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null; parent: TContainerNode | null; tViews: null; projection: null; } /** * Explicitly marks `TView` as a specific type in `ngDevMode` * * It is useful to know conceptually what time of `TView` we are dealing with when * debugging an application (even if the runtime does not need it.) For this reason * we store this information in the `ngDevMode` `TView` and than use it for * better debugging experience. */ declare const enum TViewType { /** * Root `TView` is the used to bootstrap components into. It is used in conjunction with * `LView` which takes an existing DOM node not owned by Angular and wraps it in `TView`/`LView` * so that other components can be loaded into it. */ Root = 0, /** * `TView` associated with a Component. This would be the `TView` directly associated with the * component view (as opposed an `Embedded` `TView` which would be a child of `Component` `TView`) */ Component = 1, /** * `TView` associated with a template. Such as `*ngIf`, `<ng-template>` etc... A `Component` * can have zero or more `Embedede` `TView`s. */ Embedded = 2 } /** * Special location which allows easy identification of type. If we have an array which was * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is * `LContainer`. */ declare const TYPE = 1; /** * @description * * Represents a type that a Component or other object is instances of. * * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is be represented by * the `MyCustomComponent` constructor function. * * @publicApi */ export declare const Type: FunctionConstructor; export declare interface Type<T> extends Function { new (...args: any[]): T; } /** * An interface implemented by all Angular type decorators, which allows them to be used as * decorators as well as Angular syntax. * * ``` * @ng.Component({...}) * class MyClass {...} * ``` * * @publicApi */ export declare interface TypeDecorator { /** * Invoke as decorator. */ <T extends Type<any>>(type: T): T; (target: Object, propertyKey?: string | symbol, parameterIndex?: number): void; } /** * Configures the `Injector` to return an instance of `Type` when `Type' is used as the token. * * Create an instance by invoking the `new` operator and supplying additional arguments. * This form is a short form of `TypeProvider`; * * For more details, see the ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * {@example core/di/ts/provider_spec.ts region='TypeProvider'} * * @publicApi */ export declare interface TypeProvider extends Type<any> { } /** * Configures the `Injector` to return a value for a token. * @see ["Dependency Injection Guide"](guide/dependency-injection). * * @usageNotes * * ### Example * * {@example core/di/ts/provider_spec.ts region='ValueProvider'} * * ### Multi-value example * * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'} * * @publicApi */ export declare interface ValueProvider extends ValueSansProvider { /** * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`. */ provide: any; /** * When true, injector returns an array of instances. This is useful to allow multiple * providers spread across many files to provide configuration information to a common token. */ multi?: boolean; } /** * Configures the `Injector` to return a value for a token. * Base for `ValueProvider` decorator. * * @publicApi */ export declare interface ValueSansProvider { /** * The value to inject. */ useValue: any; } /** * @publicApi */ export declare const VERSION: Version; /** * @description Represents the version of Angular * * @publicApi */ export declare class Version { full: string; readonly major: string; readonly minor: string; readonly patch: string; constructor(full: string); } declare const VIEW_REFS = 8; /** * Type of the ViewChild metadata. * * @publicApi */ export declare type ViewChild = Query; /** * ViewChild decorator and metadata. * * @Annotation * @publicApi */ export declare const ViewChild: ViewChildDecorator; /** * Type of the ViewChild decorator / constructor function. * * @see `ViewChild`. * @publicApi */ export declare interface ViewChildDecorator { /** * @description * Property decorator that configures a view query. * The change detector looks for the first element or the directive matching the selector * in the view DOM. If the view DOM changes, and a new child matches the selector, * the property is updated. * * View queries are set before the `ngAfterViewInit` callback is called. * * **Metadata Properties**: * * * **selector** - The directive type or the name used for querying. * * **read** - True to read a different token from the queried elements. * * **static** - True to resolve query results before change detection runs, * false to resolve after change detection. Defaults to false. * * * The following selectors are supported. * * Any class with the `@Component` or `@Directive` decorator * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>` * with `@ViewChild('cmp')`) * * Any provider defined in the child component tree of the current component (e.g. * `@ViewChild(SomeService) someService: SomeService`) * * Any provider defined through a string token (e.g. `@ViewChild('someToken') someTokenVal: * any`) * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChild(TemplateRef) * template;`) * * @usageNotes * * {@example core/di/ts/viewChild/view_child_example.ts region='Component'} * * ### Example 2 * * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'} * * @Annotation */ (selector: Type<any> | Function | string, opts?: { read?: any; static?: boolean; }): any; new (selector: Type<any> | Function | string, opts?: { read?: any; static?: boolean; }): ViewChild; } /** * Type of the ViewChildren metadata. * * @publicApi */ export declare type ViewChildren = Query; /** * ViewChildren decorator and metadata. * * @Annotation * @publicApi */ export declare const ViewChildren: ViewChildrenDecorator; /** * Type of the ViewChildren decorator / constructor function. * * @see `ViewChildren`. * * @publicApi */ export declare interface ViewChildrenDecorator { /** * Parameter decorator that configures a view query. * * Use to get the `QueryList` of elements or directives from the view DOM. * Any time a child element is added, removed, or moved, the query list will be updated, * and the changes observable of the query list will emit a new value. * * View queries are set before the `ngAfterViewInit` callback is called. * * **Metadata Properties**: * * * **selector** - The directive type or the name used for querying. * * **read** - True to read a different token from the queried elements. * * @usageNotes * * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'} * * ### Another example * * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'} * * @Annotation */ (selector: Type<any> | Function | string, opts?: { read?: any; }): any; new (selector: Type<any> | Function | string, opts?: { read?: any; }): ViewChildren; } /** * Represents a container where one or more views can be attached to a component. * * Can contain *host views* (created by instantiating a * component with the `createComponent()` method), and *embedded views* * (created by instantiating a `TemplateRef` with the `createEmbeddedView()` method). * * A view container instance can contain other view containers, * creating a [view hierarchy](guide/glossary#view-tree). * * @see `ComponentRef` * @see `EmbeddedViewRef` * * @publicApi */ export declare abstract class ViewContainerRef { /** * Anchor element that specifies the location of this container in the containing view. * Each view container can have only one anchor element, and each anchor element * can have only a single view container. * * Root elements of views attached to this container become siblings of the anchor element in * the rendered view. * * Access the `ViewContainerRef` of an element by placing a `Directive` injected * with `ViewContainerRef` on the element, or use a `ViewChild` query. * * <!-- TODO: rename to anchorElement --> */ abstract get element(): ElementRef; /** * The [dependency injector](guide/glossary#injector) for this view container. */ abstract get injector(): Injector; /** @deprecated No replacement */ abstract get parentInjector(): Injector; /** * Destroys all views in this container. */ abstract clear(): void; /** * Retrieves a view from this container. * @param index The 0-based index of the view to retrieve. * @returns The `ViewRef` instance, or null if the index is out of range. */ abstract get(index: number): ViewRef | null; /** * Reports how many views are currently attached to this container. * @returns The number of views. */ abstract get length(): number; /** * Instantiates an embedded view and inserts it * into this container. * @param templateRef The HTML template that defines the view. * @param index The 0-based index at which to insert the new view into this container. * If not specified, appends the new view as the last entry. * * @returns The `ViewRef` instance for the newly created view. */ abstract createEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number): EmbeddedViewRef<C>; /** * Instantiates a single component and inserts its host view into this container. * * @param componentFactory The factory to use. * @param index The index at which to insert the new component's host view into this container. * If not specified, appends the new view as the last entry. * @param injector The injector to use as the parent for the new component. * @param projectableNodes * @param ngModule * * @returns The new component instance, containing the host view. * */ abstract createComponent<C>(componentFactory: ComponentFactory<C>, index?: number, injector?: Injector, projectableNodes?: any[][], ngModule?: NgModuleRef<any>): ComponentRef<C>; /** * Inserts a view into this container. * @param viewRef The view to insert. * @param index The 0-based index at which to insert the view. * If not specified, appends the new view as the last entry. * @returns The inserted `ViewRef` instance. * */ abstract insert(viewRef: ViewRef, index?: number): ViewRef; /** * Moves a view to a new location in this container. * @param viewRef The view to move. * @param index The 0-based index of the new location. * @returns The moved `ViewRef` instance. */ abstract move(viewRef: ViewRef, currentIndex: number): ViewRef; /** * Returns the index of a view within the current container. * @param viewRef The view to query. * @returns The 0-based index of the view's position in this container, * or `-1` if this container doesn't contain the view. */ abstract indexOf(viewRef: ViewRef): number; /** * Destroys a view attached to this container * @param index The 0-based index of the view to destroy. * If not specified, the last view in the container is removed. */ abstract remove(index?: number): void; /** * Detaches a view from this container without destroying it. * Use along with `insert()` to move a view within the current container. * @param index The 0-based index of the view to detach. * If not specified, the last view in the container is detached. */ abstract detach(index?: number): ViewRef | null; } /** * View instance data. * Attention: Adding fields to this is performance sensitive! */ declare interface ViewData { def: ɵViewDefinition; root: RootData; renderer: Renderer2; parentNodeDef: NodeDef | null; parent: ViewData | null; viewContainerParent: ViewData | null; component: any; context: any; nodes: { [key: number]: NodeData; }; state: ViewState; oldValues: any[]; disposables: DisposableFn[] | null; initIndex: number; } declare interface ViewDefinitionFactory extends DefinitionFactory<ɵViewDefinition> { } /** * Defines template and style encapsulation options available for Component's {@link Component}. * * See {@link Component#encapsulation encapsulation}. * * @usageNotes * ### Example * * {@example core/ts/metadata/encapsulation.ts region='longform'} * * @publicApi */ export declare enum ViewEncapsulation { /** * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host * Element and pre-processing the style rules provided via {@link Component#styles styles} or * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all * selectors. * * This is the default option. */ Emulated = 0, /** * @deprecated v6.1.0 - use {ViewEncapsulation.ShadowDom} instead. * Use the native encapsulation mechanism of the renderer. * * For the DOM this means using the deprecated [Shadow DOM * v0](https://w3c.github.io/webcomponents/spec/shadow/) and * creating a ShadowRoot for Component's Host Element. */ Native = 1, /** * Don't provide any template or style encapsulation. */ None = 2, /** * Use Shadow DOM to encapsulate styles. * * For the DOM this means using modern [Shadow * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and * creating a ShadowRoot for Component's Host Element. */ ShadowDom = 3 } declare interface viewEngine_ChangeDetectorRef_interface extends ChangeDetectorRef { } declare interface ViewHandleEventFn { (view: ViewData, nodeIndex: number, eventName: string, event: any): boolean; } /** * Definition of what a view queries function should look like. */ declare type ViewQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void; /** * Represents an Angular [view](guide/glossary#view), * specifically the [host view](guide/glossary#view-tree) that is defined by a component. * Also serves as the base class * that adds destroy methods for [embedded views](guide/glossary#view-tree). * * @see `EmbeddedViewRef` * * @publicApi */ export declare abstract class ViewRef extends ChangeDetectorRef { /** * Destroys this view and all of the data structures associated with it. */ abstract destroy(): void; /** * Reports whether this view has been destroyed. * @returns True after the `destroy()` method has been called, false otherwise. */ abstract get destroyed(): boolean; /** * A lifecycle hook that provides additional developer-defined cleanup * functionality for views. * @param callback A handler function that cleans up developer-defined data * associated with a view. Called when the `destroy()` method is invoked. */ abstract onDestroy(callback: Function): any /** TODO #9100 */; } declare class ViewRef_2<T> implements EmbeddedViewRef<T>, InternalViewRef, viewEngine_ChangeDetectorRef_interface { /** * This represents the `LView` associated with the point where `ChangeDetectorRef` was * requested. * * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view. */ private _cdRefInjectingView?; private _appRef; private _viewContainerRef; get rootNodes(): any[]; constructor( /** * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef. * * When ViewRef is created for a dynamic component, this also represents the `LView` for the * component. * * For a "regular" ViewRef created for an embedded view, this is the `LView` for the embedded * view. * * @internal */ _lView: ɵangular_packages_core_core_bo, /** * This represents the `LView` associated with the point where `ChangeDetectorRef` was * requested. * * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view. */ _cdRefInjectingView?: ɵangular_packages_core_core_bo | undefined); get context(): T; get destroyed(): boolean; destroy(): void; onDestroy(callback: Function): void; /** * Marks a view and all of its ancestors dirty. * * It also triggers change detection by calling `scheduleTick` internally, which coalesces * multiple `markForCheck` calls to into one change detection run. * * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush OnPush} component is * checked when it needs to be re-rendered but the two normal triggers haven't marked it * dirty (i.e. inputs haven't changed and events haven't fired in the view). * * <!-- TODO: Add a link to a chapter on OnPush components --> * * @usageNotes * ### Example * * ```typescript * @Component({ * selector: 'my-app', * template: `Number of ticks: {{numberOfTicks}}` * changeDetection: ChangeDetectionStrategy.OnPush, * }) * class AppComponent { * numberOfTicks = 0; * * constructor(private ref: ChangeDetectorRef) { * setInterval(() => { * this.numberOfTicks++; * // the following is required, otherwise the view will not be updated * this.ref.markForCheck(); * }, 1000); * } * } * ``` */ markForCheck(): void; /** * Detaches the view from the change detection tree. * * Detached views will not be checked during change detection runs until they are * re-attached, even if they are dirty. `detach` can be used in combination with * {@link ChangeDetectorRef#detectChanges detectChanges} to implement local change * detection checks. * * <!-- TODO: Add a link to a chapter on detach/reattach/local digest --> * <!-- TODO: Add a live demo once ref.detectChanges is merged into master --> * * @usageNotes * ### Example * * The following example defines a component with a large list of readonly data. * Imagine the data changes constantly, many times per second. For performance reasons, * we want to check and update the list every five seconds. We can do that by detaching * the component's change detector and doing a local check every five seconds. * * ```typescript * class DataProvider { * // in a real application the returned data will be different every time * get data() { * return [1,2,3,4,5]; * } * } * * @Component({ * selector: 'giant-list', * template: ` * <li *ngFor="let d of dataProvider.data">Data {{d}}</li> * `, * }) * class GiantList { * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) { * ref.detach(); * setInterval(() => { * this.ref.detectChanges(); * }, 5000); * } * } * * @Component({ * selector: 'app', * providers: [DataProvider], * template: ` * <giant-list><giant-list> * `, * }) * class App { * } * ``` */ detach(): void; /** * Re-attaches a view to the change detection tree. * * This can be used to re-attach views that were previously detached from the tree * using {@link ChangeDetectorRef#detach detach}. Views are attached to the tree by default. * * <!-- TODO: Add a link to a chapter on detach/reattach/local digest --> * * @usageNotes * ### Example * * The following example creates a component displaying `live` data. The component will detach * its change detector from the main change detector tree when the component's live property * is set to false. * * ```typescript * class DataProvider { * data = 1; * * constructor() { * setInterval(() => { * this.data = this.data * 2; * }, 500); * } * } * * @Component({ * selector: 'live-data', * inputs: ['live'], * template: 'Data: {{dataProvider.data}}' * }) * class LiveData { * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {} * * set live(value) { * if (value) { * this.ref.reattach(); * } else { * this.ref.detach(); * } * } * } * * @Component({ * selector: 'my-app', * providers: [DataProvider], * template: ` * Live Update: <input type="checkbox" [(ngModel)]="live"> * <live-data [live]="live"><live-data> * `, * }) * class AppComponent { * live = true; * } * ``` */ reattach(): void; /** * Checks the view and its children. * * This can also be used in combination with {@link ChangeDetectorRef#detach detach} to implement * local change detection checks. * * <!-- TODO: Add a link to a chapter on detach/reattach/local digest --> * <!-- TODO: Add a live demo once ref.detectChanges is merged into master --> * * @usageNotes * ### Example * * The following example defines a component with a large list of readonly data. * Imagine, the data changes constantly, many times per second. For performance reasons, * we want to check and update the list every five seconds. * * We can do that by detaching the component's change detector and doing a local change detection * check every five seconds. * * See {@link ChangeDetectorRef#detach detach} for more information. */ detectChanges(): void; /** * Checks the change detector and its children, and throws if any changes are detected. * * This is used in development mode to verify that running change detection doesn't * introduce other changes. */ checkNoChanges(): void; attachToViewContainerRef(vcRef: ViewContainerRef): void; detachFromAppRef(): void; attachToAppRef(appRef: ApplicationRef): void; } /** * Bitmask of states */ declare const enum ViewState { BeforeFirstCheck = 1, FirstCheck = 2, Attached = 4, ChecksEnabled = 8, IsProjectedView = 16, CheckProjectedView = 32, CheckProjectedViews = 64, Destroyed = 128, InitState_Mask = 1792, InitState_BeforeInit = 0, InitState_CallingOnInit = 256, InitState_CallingAfterContentInit = 512, InitState_CallingAfterViewInit = 768, InitState_AfterInit = 1024, CatDetectChanges = 12, CatInit = 13 } declare interface ViewUpdateFn { (check: NodeCheckFn, view: ViewData): void; } /** * Indicates that the result of a {@link Pipe} transformation has changed even though the * reference has not changed. * * Wrapped values are unwrapped automatically during the change detection, and the unwrapped value * is stored. * * Example: * * ``` * if (this._latestValue === this._latestReturnedValue) { * return this._latestReturnedValue; * } else { * this._latestReturnedValue = this._latestValue; * return WrappedValue.wrap(this._latestValue); // this will force update * } * ``` * * @publicApi */ export declare class WrappedValue { /** @deprecated from 5.3, use `unwrap()` instead - will switch to protected */ wrapped: any; constructor(value: any); /** Creates a wrapped value. */ static wrap(value: any): WrappedValue; /** * Returns the underlying value of a wrapped value. * Returns the given `value` when it is not wrapped. **/ static unwrap(value: any): any; /** Returns true if `value` is a wrapped value. */ static isWrapped(value: any): value is WrappedValue; } /** * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to * the DOM in a browser environment. */ export declare function ɵ_sanitizeHtml(defaultDoc: any, unsafeHtmlInput: string): string; /** * Sanitizes the given untrusted CSS style property value (i.e. not an entire object, just a single * value) and returns a value that is safe to use in a browser environment. */ export declare function ɵ_sanitizeStyle(value: string): string; export declare function ɵ_sanitizeUrl(url: string): string; export declare const ɵALLOW_MULTIPLE_PLATFORMS: InjectionToken<boolean>; export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Html): value is ɵSafeHtml; export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.ResourceUrl): value is ɵSafeResourceUrl; export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Script): value is ɵSafeScript; export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Style): value is ɵSafeStyle; export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Url): value is ɵSafeUrl; export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType): boolean; export declare function ɵand(flags: ɵNodeFlags, matchedQueriesDsl: null | [string | number, ɵQueryValueType][], ngContentIndex: null | number, childCount: number, handleEvent?: null | ElementHandleEventFn, templateFactory?: ViewDefinitionFactory): NodeDef; /** Checks whether a function is wrapped by a `forwardRef`. */ export declare function ɵangular_packages_core_core_a(fn: any): fn is () => any; export declare function ɵangular_packages_core_core_b<T>(token: Type<T> | InjectionToken<T>): T; export declare function ɵangular_packages_core_core_b<T>(token: Type<T> | InjectionToken<T>, flags?: InjectFlags): T | null; /** * Return the current `LView`. */ export declare function ɵangular_packages_core_core_ba(): ɵangular_packages_core_core_bo; export declare function ɵangular_packages_core_core_bb(): TNode; export declare function ɵangular_packages_core_core_bc(): number; export declare function ɵangular_packages_core_core_bd<T = any>(level: number): T; /** Static data for an element */ export declare interface ɵangular_packages_core_core_be extends TNode { /** Index in the data[] array */ index: number; child: ɵangular_packages_core_core_be | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null; /** * Element nodes will have parents unless they are the first node of a component or * embedded view (which means their parent is in a different view and must be * retrieved using viewData[HOST_NODE]). */ parent: ɵangular_packages_core_core_be | TElementContainerNode | null; tViews: null; /** * If this is a component TNode with projection, this will be an array of projected * TNodes or native nodes (see TNode.projection for more info). If it's a regular element node or * a component without projection, it will be null. */ projection: (TNode | RNode[])[] | null; } /** * If the value of the provided exp has changed, calls the pure function to return * an updated value. Or if the value has not changed, returns cached value. * * @param lView LView in which the function is being executed. * @param bindingRoot Binding root index. * @param slotOffset the offset from binding root to the reserved slot * @param pureFn Function that returns an updated value * @param exp Updated expression value * @param thisArg Optional calling context of pureFn * @returns Updated or cached value */ export declare function ɵangular_packages_core_core_bf(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param lView LView in which the function is being executed. * @param bindingRoot Binding root index. * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value */ export declare function ɵangular_packages_core_core_bg(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param lView LView in which the function is being executed. * @param bindingRoot Binding root index. * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value */ export declare function ɵangular_packages_core_core_bh(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param lView LView in which the function is being executed. * @param bindingRoot Binding root index. * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param exp4 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * */ export declare function ɵangular_packages_core_core_bi(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, thisArg?: any): any; /** * pureFunction instruction that can support any number of bindings. * * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param lView LView in which the function is being executed. * @param bindingRoot Binding root index. * @param slotOffset the offset from binding root to the reserved slot * @param pureFn A pure function that takes binding values and builds an object or array * containing those values. * @param exps An array of binding values * @param thisArg Optional calling context of pureFn * @returns Updated or cached value */ export declare function ɵangular_packages_core_core_bj(lView: ɵangular_packages_core_core_bo, bindingRoot: number, slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any; /** * Detects which sanitizer to use for URL property, based on tag name and prop name. * * The rules are based on the RESOURCE_URL context config from * `packages/compiler/src/schema/dom_security_schema.ts`. * If tag and prop names don't match Resource URL schema, use URL sanitizer. */ export declare function ɵangular_packages_core_core_bk(tag: string, prop: string): typeof ɵɵsanitizeResourceUrl; export declare function ɵangular_packages_core_core_bl(name: string, props?: (...args: any[]) => any, parentClass?: any): any; export declare function ɵangular_packages_core_core_bm(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (target: any, name: string, ...args: any[]) => void): any; export declare function ɵangular_packages_core_core_bn<T>(objWithPropertyToExtract: T): string; /** * `LView` stores all of the information needed to process the instructions as * they are invoked from the template. Each embedded view and component view has its * own `LView`. When processing a particular view, we set the `viewData` to that * `LView`. When that view is done processing, the `viewData` is set back to * whatever the original `viewData` was before (the parent `LView`). * * Keeping separate state for each view facilities view insertion / deletion, so we * don't have to edit the data array based on which views are present. */ export declare interface ɵangular_packages_core_core_bo extends Array<any> { /** * The host node for this LView instance, if this is a component view. * If this is an embedded view, HOST will be null. */ [HOST]: RElement | null; /** * The static data for this view. We need a reference to this so we can easily walk up the * node tree in DI and get the TView.data array associated with a node (where the * directive defs are stored). */ readonly [TVIEW]: TView; /** Flags for this view. See LViewFlags for more info. */ [FLAGS]: LViewFlags; /** * This may store an {@link LView} or {@link LContainer}. * * `LView` - The parent view. This is needed when we exit the view and must restore the previous * LView. Without this, the render method would have to keep a stack of * views as it is recursively rendering templates. * * `LContainer` - The current view is part of a container, and is an embedded view. */ [PARENT]: ɵangular_packages_core_core_bo | LContainer | null; /** * * The next sibling LView or LContainer. * * Allows us to propagate between sibling view states that aren't in the same * container. Embedded views already have a node.next, but it is only set for * views in the same container. We need a way to link component views and views * across containers as well. */ [NEXT]: ɵangular_packages_core_core_bo | LContainer | null; /** Queries active for this view - nodes from a view are reported to those queries. */ [QUERIES]: LQueries | null; /** * Pointer to the `TViewNode` or `TElementNode` which represents the root of the view. * * If `TViewNode`, this is an embedded view of a container. We need this to be able to * efficiently find the `LViewNode` when inserting the view into an anchor. * * If `TElementNode`, this is the LView of a component. * * If null, this is the root view of an application (root component is in this view). */ [T_HOST]: TViewNode | ɵangular_packages_core_core_be | null; /** * When a view is destroyed, listeners need to be released and outputs need to be * unsubscribed. This context array stores both listener functions wrapped with * their context and output subscription instances for a particular view. * * These change per LView instance, so they cannot be stored on TView. Instead, * TView.cleanup saves an index to the necessary context in this array. */ [CLEANUP]: any[] | null; /** * - For dynamic views, this is the context with which to render the template (e.g. * `NgForContext`), or `{}` if not defined explicitly. * - For root view of the root component the context contains change detection data. * - For non-root components, the context is the component instance, * - For inline views, the context is null. */ [CONTEXT]: {} | RootContext | null; /** An optional Module Injector to be used as fall back after Element Injectors are consulted. */ readonly [INJECTOR_2]: Injector | null; /** Factory to be used for creating Renderer. */ [RENDERER_FACTORY]: RendererFactory3; /** Renderer to be used for this view. */ [RENDERER]: Renderer3; /** An optional custom sanitizer. */ [SANITIZER]: Sanitizer | null; /** * Reference to the first LView or LContainer beneath this LView in * the hierarchy. * * Necessary to store this so views can traverse through their nested views * to remove listeners and call onDestroy callbacks. */ [CHILD_HEAD]: ɵangular_packages_core_core_bo | LContainer | null; /** * The last LView or LContainer beneath this LView in the hierarchy. * * The tail allows us to quickly add a new state to the end of the view list * without having to propagate starting from the first child. */ [CHILD_TAIL]: ɵangular_packages_core_core_bo | LContainer | null; /** * View where this view's template was declared. * * Only applicable for dynamically created views. Will be null for inline/component views. * * The template for a dynamically created view may be declared in a different view than * it is inserted. We already track the "insertion view" (view where the template was * inserted) in LView[PARENT], but we also need access to the "declaration view" * (view where the template was declared). Otherwise, we wouldn't be able to call the * view's template function with the proper contexts. Context should be inherited from * the declaration view tree, not the insertion view tree. * * Example (AppComponent template): * * <ng-template #foo></ng-template> <-- declared here --> * <some-comp [tpl]="foo"></some-comp> <-- inserted inside this component --> * * The <ng-template> above is declared in the AppComponent template, but it will be passed into * SomeComp and inserted there. In this case, the declaration view would be the AppComponent, * but the insertion view would be SomeComp. When we are removing views, we would want to * traverse through the insertion view to clean up listeners. When we are calling the * template function during change detection, we need the declaration view to get inherited * context. */ [DECLARATION_VIEW]: ɵangular_packages_core_core_bo | null; /** * Points to the declaration component view, used to track transplanted `LView`s. * * See: `DECLARATION_VIEW` which points to the actual `LView` where it was declared, whereas * `DECLARATION_COMPONENT_VIEW` points to the component which may not be same as * `DECLARATION_VIEW`. * * Example: * ``` * <#VIEW #myComp> * <div *ngIf="true"> * <ng-template #myTmpl>...</ng-template> * </div> * </#VIEW> * ``` * In the above case `DECLARATION_VIEW` for `myTmpl` points to the `LView` of `ngIf` whereas * `DECLARATION_COMPONENT_VIEW` points to `LView` of the `myComp` which owns the template. * * The reason for this is that all embedded views are always check-always whereas the component * view can be check-always or on-push. When we have a transplanted view it is important to * determine if we have transplanted a view from check-always declaration to on-push insertion * point. In such a case the transplanted view needs to be added to the `LContainer` in the * declared `LView` and CD during the declared view CD (in addition to the CD at the insertion * point.) (Any transplanted views which are intra Component are of no interest because the CD * strategy of declaration and insertion will always be the same, because it is the same * component.) * * Queries already track moved views in `LView[DECLARATION_LCONTAINER]` and * `LContainer[MOVED_VIEWS]`. However the queries also track `LView`s which moved within the same * component `LView`. Transplanted views are a subset of moved views, and we use * `DECLARATION_COMPONENT_VIEW` to differentiate them. As in this example. * * Example showing intra component `LView` movement. * ``` * <#VIEW #myComp> * <div *ngIf="condition; then thenBlock else elseBlock"></div> * <ng-template #thenBlock>Content to render when condition is true.</ng-template> * <ng-template #elseBlock>Content to render when condition is false.</ng-template> * </#VIEW> * ``` * The `thenBlock` and `elseBlock` is moved but not transplanted. * * Example showing inter component `LView` movement (transplanted view). * ``` * <#VIEW #myComp> * <ng-template #myTmpl>...</ng-template> * <insertion-component [template]="myTmpl"></insertion-component> * </#VIEW> * ``` * In the above example `myTmpl` is passed into a different component. If `insertion-component` * instantiates `myTmpl` and `insertion-component` is on-push then the `LContainer` needs to be * marked as containing transplanted views and those views need to be CD as part of the * declaration CD. * * * When change detection runs, it iterates over `[MOVED_VIEWS]` and CDs any child `LView`s where * the `DECLARATION_COMPONENT_VIEW` of the current component and the child `LView` does not match * (it has been transplanted across components.) * * Note: `[DECLARATION_COMPONENT_VIEW]` points to itself if the LView is a component view (the * simplest / most common case). * * see also: * - https://hackmd.io/@mhevery/rJUJsvv9H write up of the problem * - `LContainer[ACTIVE_INDEX]` for flag which marks which `LContainer` has transplanted views. * - `LContainer[TRANSPLANT_HEAD]` and `LContainer[TRANSPLANT_TAIL]` storage for transplanted * - `LView[DECLARATION_LCONTAINER]` similar problem for queries * - `LContainer[MOVED_VIEWS]` similar problem for queries */ [DECLARATION_COMPONENT_VIEW]: ɵangular_packages_core_core_bo; /** * A declaration point of embedded views (ones instantiated based on the content of a * <ng-template>), null for other types of views. * * We need to track all embedded views created from a given declaration point so we can prepare * query matches in a proper order (query matches are ordered based on their declaration point and * _not_ the insertion point). */ [DECLARATION_LCONTAINER]: LContainer | null; /** * More flags for this view. See PreOrderHookFlags for more info. */ [PREORDER_HOOK_FLAGS]: PreOrderHookFlags; } /** * Convince closure compiler that the wrapped function has no side-effects. * * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to * allow us to execute a function but have closure compiler mark the call as no-side-effects. * It is important that the return value for the `noSideEffects` function be assigned * to something which is retained otherwise the call to `noSideEffects` will be removed by closure * compiler. */ export declare function ɵangular_packages_core_core_bp(fn: () => void): string; /** * Returns the `RootContext` instance that is associated with * the application where the target is situated. It does this by walking the parent views until it * gets to the root view, then getting the context off of that. * * @param viewOrComponent the `LView` or component to get the root context for. */ export declare function ɵangular_packages_core_core_bq(viewOrComponent: ɵangular_packages_core_core_bo | {}): RootContext; export declare class ɵangular_packages_core_core_c implements Injector { get(token: any, notFoundValue?: any): any; } export declare class ɵangular_packages_core_core_d implements ReflectiveInjector { private static INJECTOR_KEY; readonly parent: Injector | null; keyIds: number[]; objs: any[]; /** * Private */ constructor(_providers: ResolvedReflectiveProvider[], _parent?: Injector); get(token: any, notFoundValue?: any): any; resolveAndCreateChild(providers: Provider[]): ReflectiveInjector; createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector; resolveAndInstantiate(provider: Provider): any; instantiateResolved(provider: ResolvedReflectiveProvider): any; getProviderAtIndex(index: number): ResolvedReflectiveProvider; private _getMaxNumberOfObjects; private _instantiateProvider; private _instantiate; private _getByReflectiveDependency; private _getByKey; private _getObjByKeyId; get displayName(): string; toString(): string; } /** * `Dependency` is used by the framework to extend DI. * This is internal to Angular and should not be used directly. */ export declare class ɵangular_packages_core_core_e { key: ReflectiveKey; optional: boolean; visibility: Self | SkipSelf | null; constructor(key: ReflectiveKey, optional: boolean, visibility: Self | SkipSelf | null); static fromKey(key: ReflectiveKey): ɵangular_packages_core_core_e; } /** * Resolve a list of Providers. */ export declare function ɵangular_packages_core_core_f(providers: Provider[]): ResolvedReflectiveProvider[]; export declare function ɵangular_packages_core_core_g(): string; /** * Creates an ElementRef given a node. * * @param ElementRefToken The ElementRef type * @param tNode The node for which you'd like an ElementRef * @param view The view to which the node belongs * @returns The ElementRef instance to use */ export declare function ɵangular_packages_core_core_h(ElementRefToken: typeof ElementRef, tNode: TNode, view: ɵangular_packages_core_core_bo): ElementRef; /** * Creates a TemplateRef and stores it on the injector. * * @param TemplateRefToken The TemplateRef type * @param ElementRefToken The ElementRef type * @param hostTNode The node on which a TemplateRef is requested * @param hostView The view to which the node belongs * @returns The TemplateRef instance or null if we can't create a TemplateRef on a given node type */ export declare function ɵangular_packages_core_core_i<T>(TemplateRefToken: typeof TemplateRef, ElementRefToken: typeof ElementRef, hostTNode: TNode, hostView: ɵangular_packages_core_core_bo): TemplateRef<T> | null; export declare function ɵangular_packages_core_core_j(id: string): NgModuleFactory<any>; export declare class ɵangular_packages_core_core_k { readonly listeners: DebugEventListener[]; readonly parent: DebugElement | null; readonly nativeNode: any; private readonly _debugContext; constructor(nativeNode: any, parent: DebugNode | null, _debugContext: ɵangular_packages_core_core_w); get injector(): Injector; get componentInstance(): any; get context(): any; get references(): { [key: string]: any; }; get providerTokens(): any[]; } export declare class ɵangular_packages_core_core_l extends ɵangular_packages_core_core_k implements DebugElement { readonly name: string; readonly properties: { [key: string]: any; }; readonly attributes: { [key: string]: string | null; }; readonly classes: { [key: string]: boolean; }; readonly styles: { [key: string]: string | null; }; readonly childNodes: DebugNode[]; readonly nativeElement: any; constructor(nativeNode: any, parent: any, _debugContext: ɵangular_packages_core_core_w); addChild(child: DebugNode): void; removeChild(child: DebugNode): void; insertChildrenAfter(child: DebugNode, newChildren: DebugNode[]): void; insertBefore(refChild: DebugNode, newChild: DebugNode): void; query(predicate: Predicate<DebugElement>): DebugElement; queryAll(predicate: Predicate<DebugElement>): DebugElement[]; queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[]; get children(): DebugElement[]; triggerEventHandler(eventName: string, eventObj: any): void; } export declare function ɵangular_packages_core_core_m(nativeNode: any): DebugNode | null; export declare class ɵangular_packages_core_core_n implements IterableDifferFactory { constructor(); supports(obj: Object | null | undefined): boolean; create<V>(trackByFn?: TrackByFunction<V>): DefaultIterableDiffer<V>; } export declare class ɵangular_packages_core_core_o<K, V> implements KeyValueDifferFactory { constructor(); supports(obj: any): boolean; create<K, V>(): KeyValueDiffer<K, V>; } export declare function ɵangular_packages_core_core_p(): IterableDiffers; export declare function ɵangular_packages_core_core_q(): KeyValueDiffers; export declare function ɵangular_packages_core_core_r(locale?: string): string; /** * A built-in [dependency injection token](guide/glossary#di-token) * that is used to configure the root injector for bootstrapping. */ export declare const ɵangular_packages_core_core_s: StaticProvider[]; /** * Schedule work at next available slot. * * In Ivy this is just `requestAnimationFrame`. For compatibility reasons when bootstrapped * using `platformRef.bootstrap` we need to use `NgZone.onStable` as the scheduling mechanism. * This overrides the scheduling mechanism in Ivy to `NgZone.onStable`. * * @param ngZone NgZone to use for scheduling. */ export declare function ɵangular_packages_core_core_t(ngZone: NgZone): (fn: () => void) => void; /** * USD currency code that the application uses by default for CurrencyPipe when no * DEFAULT_CURRENCY_CODE is provided. */ export declare const ɵangular_packages_core_core_u = "USD"; export declare function ɵangular_packages_core_core_v(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: [string | number, ɵQueryValueType][] | null, childCount: number, token: any, value: any, deps: ([ɵDepFlags, any] | any)[], bindings?: BindingDef[], outputs?: OutputDef[]): NodeDef; export declare abstract class ɵangular_packages_core_core_w { abstract get view(): ViewData; abstract get nodeIndex(): number | null; abstract get injector(): Injector; abstract get component(): any; abstract get providerTokens(): any[]; abstract get references(): { [key: string]: any; }; abstract get context(): any; abstract get componentRenderElement(): any; abstract get renderNode(): any; abstract logError(console: Console, ...values: any[]): void; } /** * A change detection scheduler token for {@link RootContext}. This token is the default value used * for the default `RootContext` found in the {@link ROOT_CONTEXT} token. */ export declare const ɵangular_packages_core_core_x: InjectionToken<(fn: () => void) => void>; /** * Inject static attribute value into directive constructor. * * This method is used with `factory` functions which are generated as part of * `defineDirective` or `defineComponent`. The method retrieves the static value * of an attribute. (Dynamic attributes are not supported since they are not resolved * at the time of injection and can change over time.) * * # Example * Given: * ``` * @Component(...) * class MyComponent { * constructor(@Attribute('title') title: string) { ... } * } * ``` * When instantiated with * ``` * <my-component title="Hello"></my-component> * ``` * * Then factory method generated is: * ``` * MyComponent.ɵcmp = defineComponent({ * factory: () => new MyComponent(injectAttribute('title')) * ... * }) * ``` * * @publicApi */ export declare function ɵangular_packages_core_core_y(tNode: TNode, attrNameToInject: string): string | null; export declare const ɵangular_packages_core_core_z: InstructionState; /** * Providers that will generate a random APP_ID_TOKEN. * @publicApi */ export declare const ɵAPP_ID_RANDOM_PROVIDER: { provide: InjectionToken<string>; useFactory: typeof ɵangular_packages_core_core_g; deps: any[]; }; export declare const enum ɵArgumentType { Inline = 0, Dynamic = 1 } /** * A set of marker values to be used in the attributes arrays. These markers indicate that some * items are not regular attributes and the processing should be adapted accordingly. */ export declare const enum ɵAttributeMarker { /** * An implicit marker which indicates that the value in the array are of `attributeKey`, * `attributeValue` format. * * NOTE: This is implicit as it is the type when no marker is present in array. We indicate that * it should not be present at runtime by the negative number. */ ImplicitAttributes = -1, /** * Marker indicates that the following 3 values in the attributes array are: * namespaceUri, attributeName, attributeValue * in that order. */ NamespaceURI = 0, /** * Signals class declaration. * * Each value following `Classes` designates a class name to include on the element. * ## Example: * * Given: * ``` * <div class="foo bar baz">...<d/vi> * ``` * * the generated code is: * ``` * var _c1 = [AttributeMarker.Classes, 'foo', 'bar', 'baz']; * ``` */ Classes = 1, /** * Signals style declaration. * * Each pair of values following `Styles` designates a style name and value to include on the * element. * ## Example: * * Given: * ``` * <div style="width:100px; height:200px; color:red">...</div> * ``` * * the generated code is: * ``` * var _c1 = [AttributeMarker.Styles, 'width', '100px', 'height'. '200px', 'color', 'red']; * ``` */ Styles = 2, /** * Signals that the following attribute names were extracted from input or output bindings. * * For example, given the following HTML: * * ``` * <div moo="car" [foo]="exp" (bar)="doSth()"> * ``` * * the generated code is: * * ``` * var _c1 = ['moo', 'car', AttributeMarker.Bindings, 'foo', 'bar']; * ``` */ Bindings = 3, /** * Signals that the following attribute names were hoisted from an inline-template declaration. * * For example, given the following HTML: * * ``` * <div *ngFor="let value of values; trackBy:trackBy" dirA [dirB]="value"> * ``` * * the generated code for the `template()` instruction would include: * * ``` * ['dirA', '', AttributeMarker.Bindings, 'dirB', AttributeMarker.Template, 'ngFor', 'ngForOf', * 'ngForTrackBy', 'let-value'] * ``` * * while the generated code for the `element()` instruction inside the template function would * include: * * ``` * ['dirA', '', AttributeMarker.Bindings, 'dirB'] * ``` */ Template = 4, /** * Signals that the following attribute is `ngProjectAs` and its value is a parsed `CssSelector`. * * For example, given the following HTML: * * ``` * <h1 attr="value" ngProjectAs="[title]"> * ``` * * the generated code for the `element()` instruction would include: * * ``` * ['attr', 'value', AttributeMarker.ProjectAs, ['', 'title', '']] * ``` */ ProjectAs = 5, /** * Signals that the following attribute will be translated by runtime i18n * * For example, given the following HTML: * * ``` * <div moo="car" foo="value" i18n-foo [bar]="binding" i18n-bar> * ``` * * the generated code is: * * ``` * var _c1 = ['moo', 'car', AttributeMarker.I18n, 'foo', 'bar']; */ I18n = 6 } export declare const enum ɵBindingFlags { TypeElementAttribute = 1, TypeElementClass = 2, TypeElementStyle = 4, TypeProperty = 8, SyntheticProperty = 16, SyntheticHostProperty = 32, CatSyntheticProperty = 48, Types = 15 } /** * Mark `html` string as trusted. * * This function wraps the trusted string in `String` and brands it in a way which makes it * recognizable to {@link htmlSanitizer} to be trusted implicitly. * * @param trustedHtml `html` string which needs to be implicitly trusted. * @returns a `html` which has been branded to be implicitly trusted. */ export declare function ɵbypassSanitizationTrustHtml(trustedHtml: string): ɵSafeHtml; /** * Mark `url` string as trusted. * * This function wraps the trusted string in `String` and brands it in a way which makes it * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly. * * @param trustedResourceUrl `url` string which needs to be implicitly trusted. * @returns a `url` which has been branded to be implicitly trusted. */ export declare function ɵbypassSanitizationTrustResourceUrl(trustedResourceUrl: string): ɵSafeResourceUrl; /** * Mark `script` string as trusted. * * This function wraps the trusted string in `String` and brands it in a way which makes it * recognizable to {@link scriptSanitizer} to be trusted implicitly. * * @param trustedScript `script` string which needs to be implicitly trusted. * @returns a `script` which has been branded to be implicitly trusted. */ export declare function ɵbypassSanitizationTrustScript(trustedScript: string): ɵSafeScript; /** * Mark `style` string as trusted. * * This function wraps the trusted string in `String` and brands it in a way which makes it * recognizable to {@link styleSanitizer} to be trusted implicitly. * * @param trustedStyle `style` string which needs to be implicitly trusted. * @returns a `style` hich has been branded to be implicitly trusted. */ export declare function ɵbypassSanitizationTrustStyle(trustedStyle: string): ɵSafeStyle; /** * Mark `url` string as trusted. * * This function wraps the trusted string in `String` and brands it in a way which makes it * recognizable to {@link urlSanitizer} to be trusted implicitly. * * @param trustedUrl `url` string which needs to be implicitly trusted. * @returns a `url` which has been branded to be implicitly trusted. */ export declare function ɵbypassSanitizationTrustUrl(trustedUrl: string): ɵSafeUrl; export declare const enum ɵBypassType { Url = "URL", Html = "HTML", ResourceUrl = "ResourceURL", Script = "Script", Style = "Style" } export declare function ɵccf(selector: string, componentType: Type<any>, viewDefFactory: ViewDefinitionFactory, inputs: { [propName: string]: string; } | null, outputs: { [propName: string]: string; }, ngContentSelectors: string[]): ComponentFactory<any>; /** * Defines the possible states of the default change detector. * @see `ChangeDetectorRef` */ export declare enum ɵChangeDetectorStatus { /** * A state in which, after calling `detectChanges()`, the change detector * state becomes `Checked`, and must be explicitly invoked or reactivated. */ CheckOnce = 0, /** * A state in which change detection is skipped until the change detector mode * becomes `CheckOnce`. */ Checked = 1, /** * A state in which change detection continues automatically until explicitly * deactivated. */ CheckAlways = 2, /** * A state in which a change detector sub tree is not a part of the main tree and * should be skipped. */ Detached = 3, /** * Indicates that the change detector encountered an error checking a binding * or calling a directive lifecycle method and is now in an inconsistent state. Change * detectors in this state do not detect changes. */ Errored = 4, /** * Indicates that the change detector has been destroyed. */ Destroyed = 5 } export declare function ɵclearOverrides(): void; export declare function ɵclearResolutionOfComponentResourcesQueue(): Map<Type<any>, Component>; export declare function ɵcmf(ngModuleType: Type<any>, bootstrapComponents: Type<any>[], defFactory: NgModuleDefinitionFactory): NgModuleFactory<any>; export declare class ɵCodegenComponentFactoryResolver implements ComponentFactoryResolver { private _parent; private _ngModule; private _factories; constructor(factories: ComponentFactory<any>[], _parent: ComponentFactoryResolver, _ngModule: NgModuleRef<any>); resolveComponentFactory<T>(component: { new (...args: any[]): T; }): ComponentFactory<T>; } /** * Compile an Angular component according to its decorator metadata, and patch the resulting * component def (ɵcmp) onto the component type. * * Compilation may be asynchronous (due to the need to resolve URLs for the component template or * other resources, for example). In the event that compilation is not immediate, `compileComponent` * will enqueue resource resolution into a global queue and will fail to return the `ɵcmp` * until the global queue has been resolved with a call to `resolveComponentResources`. */ export declare function ɵcompileComponent(type: Type<any>, metadata: Component): void; /** * Compile an Angular directive according to its decorator metadata, and patch the resulting * directive def onto the component type. * * In the event that compilation is not immediate, `compileDirective` will return a `Promise` which * will resolve when compilation completes and the directive becomes usable. */ export declare function ɵcompileDirective(type: Type<any>, directive: Directive | null): void; /** * Compiles a module in JIT mode. * * This function automatically gets called when a class has a `@NgModule` decorator. */ export declare function ɵcompileNgModule(moduleType: Type<any>, ngModule?: NgModule): void; /** * Compiles and adds the `ɵmod` and `ɵinj` properties to the module class. * * It's possible to compile a module via this API which will allow duplicate declarations in its * root. */ export declare function ɵcompileNgModuleDefs(moduleType: ɵNgModuleType, ngModule: NgModule, allowDuplicateDeclarationsInRoot?: boolean): void; export declare function ɵcompileNgModuleFactory__POST_R3__<M>(injector: Injector, options: CompilerOptions, moduleType: Type<M>): Promise<NgModuleFactory<M>>; export declare function ɵcompilePipe(type: Type<any>, meta: Pipe): void; export declare const ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__: <T>(moduleType: Type<T>) => Promise<ModuleWithComponentFactories<T>>; export declare const ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__: <T>(moduleType: Type<T>) => ModuleWithComponentFactories<T>; export declare const ɵCompiler_compileModuleAsync__POST_R3__: <T>(moduleType: Type<T>) => Promise<NgModuleFactory<T>>; export declare const ɵCompiler_compileModuleSync__POST_R3__: <T>(moduleType: Type<T>) => NgModuleFactory<T>; /** * Runtime link information for Components. * * This is an internal data structure used by the render to link * components into templates. * * NOTE: Always use `defineComponent` function to create this object, * never create the object directly since the shape of this object * can change between versions. * * See: {@link defineComponent} */ export declare interface ɵComponentDef<T> extends ɵDirectiveDef<T> { /** * Runtime unique component ID. */ readonly id: string; /** * The View template of the component. */ readonly template: ComponentTemplate<T>; /** Constants associated with the component's view. */ readonly consts: TConstants | null; /** * An array of `ngContent[selector]` values that were found in the template. */ readonly ngContentSelectors?: string[]; /** * A set of styles that the component needs to be present for component to render correctly. */ readonly styles: string[]; /** * The number of nodes, local refs, and pipes in this component template. * * Used to calculate the length of the component's LView array, so we * can pre-fill the array and set the binding start index. */ readonly decls: number; /** * The number of bindings in this component template (including pure fn bindings). * * Used to calculate the length of the component's LView array, so we * can pre-fill the array and set the host binding start index. */ readonly vars: number; /** * Query-related instructions for a component. */ viewQuery: ViewQueriesFunction<T> | null; /** * The view encapsulation type, which determines how styles are applied to * DOM elements. One of * - `Emulated` (default): Emulate native scoping of styles. * - `Native`: Use the native encapsulation mechanism of the renderer. * - `ShadowDom`: Use modern [ShadowDOM](https://w3c.github.io/webcomponents/spec/shadow/) and * create a ShadowRoot for component's host element. * - `None`: Do not provide any template or style encapsulation. */ readonly encapsulation: ViewEncapsulation; /** * Defines arbitrary developer-defined data to be stored on a renderer instance. * This is useful for renderers that delegate to other renderers. */ readonly data: { [kind: string]: any; }; /** Whether or not this component's ChangeDetectionStrategy is OnPush */ readonly onPush: boolean; /** * Registry of directives and components that may be found in this view. * * The property is either an array of `DirectiveDef`s or a function which returns the array of * `DirectiveDef`s. The function is necessary to be able to support forward declarations. */ directiveDefs: DirectiveDefListOrFactory | null; /** * Registry of pipes that may be found in this view. * * The property is either an array of `PipeDefs`s or a function which returns the array of * `PipeDefs`s. The function is necessary to be able to support forward declarations. */ pipeDefs: PipeDefListOrFactory | null; /** * The set of schemas that declare elements to be allowed in the component's template. */ schemas: SchemaMetadata[] | null; /** * Ivy runtime uses this place to store the computed tView for the component. This gets filled on * the first run of component. */ tView: TView | null; /** * Used to store the result of `noSideEffects` function so that it is not removed by closure * compiler. The property should never be read. */ readonly _?: never; } /** * A subclass of `Type` which has a static `ɵcmp`:`ComponentDef` field making it * consumable for rendering. */ export declare interface ɵComponentType<T> extends Type<T> { ɵcmp: never; } export declare class ɵConsole { log(message: string): void; warn(message: string): void; static ɵfac: ɵngcc0.ɵɵFactoryDef<ɵConsole>; static ɵprov: ɵngcc0.ɵɵInjectableDef<ɵConsole>; } /** * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s. * * @publicApi */ export declare function ɵcreateInjector(defType: any, parent?: Injector | null, additionalProviders?: StaticProvider[] | null, name?: string): Injector; export declare function ɵcrt(values: { styles: (string | any[])[]; encapsulation: ViewEncapsulation; data: { [kind: string]: any[]; }; }): RendererType2; /** * A list of CssSelectors. * * A directive or component can have multiple selectors. This type is used for * directive defs so any of the selectors in the list will match that directive. * * Original: 'form, [ngForm]' * Parsed: [['form'], ['', 'ngForm', '']] */ export declare type ɵCssSelectorList = CssSelector[]; /** * Index of each value in currency data (used to describe CURRENCIES_EN in currencies.ts) */ export declare const enum ɵCurrencyIndex { Symbol = 0, SymbolNarrow = 1, NbOfDigits = 2 } /** * The locale id that the application is using by default (for translations and ICU expressions). */ export declare const ɵDEFAULT_LOCALE_ID = "en-US"; export declare const ɵdefaultIterableDiffers: IterableDiffers; export declare const ɵdefaultKeyValueDiffers: KeyValueDiffers; /** * Bitmask for DI flags */ export declare const enum ɵDepFlags { None = 0, SkipSelf = 1, Optional = 2, Self = 4, Value = 8 } /** * Synchronously perform change detection on a component (and possibly its sub-components). * * This function triggers change detection in a synchronous way on a component. * * @param component The component which the change detection should be performed on. */ export declare function ɵdetectChanges(component: {}): void; export declare function ɵdevModeEqual(a: any, b: any): boolean; export declare function ɵdid(checkIndex: number, flags: ɵNodeFlags, matchedQueries: null | [string | number, ɵQueryValueType][], childCount: number, ctor: any, deps: ([ɵDepFlags, any] | any)[], props?: null | { [name: string]: [number, string]; }, outputs?: null | { [name: string]: string; }): NodeDef; /** * Runtime link information for Directives. * * This is an internal data structure used by the render to link * directives into templates. * * NOTE: Always use `defineDirective` function to create this object, * never create the object directly since the shape of this object * can change between versions. * * @param Selector type metadata specifying the selector of the directive or component * * See: {@link defineDirective} */ export declare interface ɵDirectiveDef<T> { /** * A dictionary mapping the inputs' minified property names to their public API names, which * are their aliases if any, or their original unminified property names * (as in `@Input('alias') propertyName: any;`). */ readonly inputs: { [P in keyof T]: string; }; /** * @deprecated This is only here because `NgOnChanges` incorrectly uses declared name instead of * public or minified name. */ readonly declaredInputs: { [P in keyof T]: string; }; /** * A dictionary mapping the outputs' minified property names to their public API names, which * are their aliases if any, or their original unminified property names * (as in `@Output('alias') propertyName: any;`). */ readonly outputs: { [P in keyof T]: string; }; /** * Function to create and refresh content queries associated with a given directive. */ contentQueries: ContentQueriesFunction<T> | null; /** * Query-related instructions for a directive. Note that while directives don't have a * view and as such view queries won't necessarily do anything, there might be * components that extend the directive. */ viewQuery: ViewQueriesFunction<T> | null; /** * Refreshes host bindings on the associated directive. */ readonly hostBindings: HostBindingsFunction<T> | null; /** * The number of bindings in this directive `hostBindings` (including pure fn bindings). * * Used to calculate the length of the component's LView array, so we * can pre-fill the array and set the host binding start index. */ readonly hostVars: number; /** * Assign static attribute values to a host element. * * This property will assign static attribute values as well as class and style * values to a host element. Since attribute values can consist of different types of values, the * `hostAttrs` array must include the values in the following format: * * attrs = [ * // static attributes (like `title`, `name`, `id`...) * attr1, value1, attr2, value, * * // a single namespace value (like `x:id`) * NAMESPACE_MARKER, namespaceUri1, name1, value1, * * // another single namespace value (like `x:name`) * NAMESPACE_MARKER, namespaceUri2, name2, value2, * * // a series of CSS classes that will be applied to the element (no spaces) * CLASSES_MARKER, class1, class2, class3, * * // a series of CSS styles (property + value) that will be applied to the element * STYLES_MARKER, prop1, value1, prop2, value2 * ] * * All non-class and non-style attributes must be defined at the start of the list * first before all class and style values are set. When there is a change in value * type (like when classes and styles are introduced) a marker must be used to separate * the entries. The marker values themselves are set via entries found in the * [AttributeMarker] enum. */ readonly hostAttrs: TAttributes | null; /** Token representing the directive. Used by DI. */ readonly type: Type<T>; /** Function that resolves providers and publishes them into the DI system. */ providersResolver: (<U extends T>(def: ɵDirectiveDef<U>, processProvidersFn?: ProcessProvidersFunction) => void) | null; /** The selectors that will be used to match nodes to this directive. */ readonly selectors: ɵCssSelectorList; /** * Name under which the directive is exported (for use with local references in template) */ readonly exportAs: string[] | null; /** * Factory function used to create a new directive instance. Will be null initially. * Populated when the factory is first requested by directive instantiation logic. */ readonly factory: FactoryFn<T> | null; readonly onChanges: (() => void) | null; readonly onInit: (() => void) | null; readonly doCheck: (() => void) | null; readonly afterContentInit: (() => void) | null; readonly afterContentChecked: (() => void) | null; readonly afterViewInit: (() => void) | null; readonly afterViewChecked: (() => void) | null; readonly onDestroy: (() => void) | null; /** * The features applied to this directive */ readonly features: DirectiveDefFeature[] | null; setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, value: any, publicName: string, privateName: string) => void) | null; } /** * A subclass of `Type` which has a static `ɵdir`:`DirectiveDef` field making it * consumable for rendering. */ export declare interface ɵDirectiveType<T> extends Type<T> { ɵdir: never; ɵfac: () => T; } export declare function ɵeld(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: null | [string | number, ɵQueryValueType][], ngContentIndex: null | number, childCount: number, namespaceAndName: string | null, fixedAttrs?: null | [string, string][], bindings?: null | [ɵBindingFlags, string, string | SecurityContext | null][], outputs?: null | ([string, string])[], handleEvent?: null | ElementHandleEventFn, componentView?: null | ViewDefinitionFactory, componentRendererType?: RendererType2 | null): NodeDef; export declare const ɵEMPTY_ARRAY: any[]; export declare const ɵEMPTY_MAP: { [key: string]: any; }; /** * Index of each type of locale data from the extra locale data array */ export declare const enum ɵExtraLocaleDataIndex { ExtraDayPeriodFormats = 0, ExtraDayPeriodStandalone = 1, ExtraDayPeriodsRules = 2 } /** * Finds the locale data for a given locale. * * @param locale The locale code. * @returns The locale data. * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n) */ export declare function ɵfindLocaleData(locale: string): any; /** * Loops over queued module definitions, if a given module definition has all of its * declarations resolved, it dequeues that module definition and sets the scope on * its declarations. */ export declare function ɵflushModuleScopingQueueAsMuchAsPossible(): void; export declare function ɵgetComponentViewDefinitionFactory(componentFactory: ComponentFactory<any>): ViewDefinitionFactory; export declare function ɵgetDebugNode__POST_R3__(nativeNode: Element): DebugElement__POST_R3__; export declare function ɵgetDebugNode__POST_R3__(nativeNode: Node): DebugNode__POST_R3__; export declare function ɵgetDebugNode__POST_R3__(nativeNode: null): null; export declare const ɵgetDebugNodeR2: (nativeNode: any) => DebugNode | null; /** * Retrieves directive instances associated with a given DOM element. Does not include * component instances. * * @usageNotes * Given the following DOM structure: * ``` * <my-app> * <button my-button></button> * <my-comp></my-comp> * </my-app> * ``` * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton` * directive that is associated with the DOM element. * * Calling `getDirectives` on `<my-comp>` will return an empty array. * * @param element DOM element for which to get the directives. * @returns Array of directives associated with the element. * * @publicApi * @globalApi ng */ export declare function ɵgetDirectives(element: Element): {}[]; /** * Retrieves the host element of a component or directive instance. * The host element is the DOM element that matched the selector of the directive. * * @param componentOrDirective Component or directive instance for which the host * element should be retrieved. * @returns Host element of the target. * * @publicApi * @globalApi ng */ export declare function ɵgetHostElement(componentOrDirective: {}): Element; /** * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading * inherited value. * * @param type A type which may have its own (non-inherited) `ɵprov`. */ export declare function ɵgetInjectableDef<T>(type: any): ɵɵInjectableDef<T> | null; /** Returns the matching `LContext` data for a given DOM node, directive or component instance. * * This function will examine the provided DOM element, component, or directive instance\'s * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched * value will be that of the newly created `LContext`. * * If the monkey-patched value is the `LView` instance then the context value for that * target will be created and the monkey-patch reference will be updated. Therefore when this * function is called it may mutate the provided element\'s, component\'s or any of the associated * directive\'s monkey-patch values. * * If the monkey-patch value is not detected then the code will walk up the DOM until an element * is found which contains a monkey-patch reference. When that occurs then the provided element * will be updated with a new context (which is then returned). If the monkey-patch value is not * detected for a component/directive instance then it will throw an error (all components and * directives should be automatically monkey-patched by ivy). * * @param target Component, Directive or DOM Node. */ export declare function ɵgetLContext(target: any): ɵLContext | null; /** * Retrieves the default currency code for the given locale. * * The default is defined as the first currency which is still in use. * * @param locale The code of the locale whose currency code we want. * @returns The code of the default currency for the given locale. * */ export declare function ɵgetLocaleCurrencyCode(locale: string): string | null; /** * Retrieves the plural function used by ICU expressions to determine the plural case to use * for a given locale. * @param locale A locale code for the locale format rules to use. * @returns The plural function for the locale. * @see `NgPlural` * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n) */ export declare function ɵgetLocalePluralCase(locale: string): (value: number) => number; export declare function ɵgetModuleFactory__POST_R3__(id: string): NgModuleFactory<any>; export declare function ɵgetSanitizationBypassType(value: any): ɵBypassType | null; export declare type ɵGetterFn = (obj: any) => any; export declare const ɵglobal: any; export declare function ɵinitServicesIfNeeded(): void; export declare function ɵINJECTOR_IMPL__POST_R3__(providers: StaticProvider[], parent: Injector | undefined, name: string): Injector; /** * An internal token whose presence in an injector indicates that the injector should treat itself * as a root scoped injector when processing requests for unknown tokens which may indicate * they are provided in the root scope. */ export declare const ɵINJECTOR_SCOPE: InjectionToken<"root" | "platform" | null>; export declare function ɵinlineInterpolate(valueCount: number, c0: string, a1: any, c1: string, a2?: any, c2?: string, a3?: any, c3?: string, a4?: any, c4?: string, a5?: any, c5?: string, a6?: any, c6?: string, a7?: any, c7?: string, a8?: any, c8?: string, a9?: any, c9?: string): string; export declare function ɵinterpolate(valueCount: number, constAndInterp: string[]): string; export declare function ɵisBoundToModule__POST_R3__<C>(cf: ComponentFactory<C>): boolean; /** * Reports whether a given strategy is currently the default for change detection. * @param changeDetectionStrategy The strategy to check. * @returns True if the given strategy is the current default, false otherwise. * @see `ChangeDetectorStatus` * @see `ChangeDetectorRef` */ export declare function ɵisDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy): boolean; export declare function ɵisListLikeIterable(obj: any): boolean; /** * Determine if the argument is an Observable */ export declare function ɵisObservable(obj: any | Observable<any>): obj is Observable<any>; /** * Determine if the argument is shaped like a Promise */ export declare function ɵisPromise(obj: any): obj is Promise<any>; export declare const ɵivyEnabled = false; /** * The internal view context which is specific to a given DOM element, directive or * component instance. Each value in here (besides the LView and element node details) * can be present, null or undefined. If undefined then it implies the value has not been * looked up yet, otherwise, if null, then a lookup was executed and nothing was found. * * Each value will get filled when the respective value is examined within the getContext * function. The component, element and each directive instance will share the same instance * of the context. */ export declare interface ɵLContext { /** * The component's parent view data. */ lView: ɵangular_packages_core_core_bo; /** * The index instance of the node. */ nodeIndex: number; /** * The instance of the DOM node that is attached to the lNode. */ native: RNode; /** * The instance of the Component node. */ component: {} | null | undefined; /** * The list of active directives that exist on this element. */ directives: any[] | null | undefined; /** * The map of local references (local reference name => element or directive instance) that exist * on this element. */ localRefs: { [key: string]: any; } | null | undefined; } /** * Used to enable lifecycle hooks on the root component. * * Include this feature when calling `renderComponent` if the root component * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't * be called properly. * * Example: * * ``` * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]}); * ``` */ export declare function ɵLifecycleHooksFeature(component: any, def: ɵComponentDef<any>): void; /** * Index of each type of locale data from the locale data array */ export declare enum ɵLocaleDataIndex { LocaleId = 0, DayPeriodsFormat = 1, DayPeriodsStandalone = 2, DaysFormat = 3, DaysStandalone = 4, MonthsFormat = 5, MonthsStandalone = 6, Eras = 7, FirstDayOfWeek = 8, WeekendRange = 9, DateFormat = 10, TimeFormat = 11, DateTimeFormat = 12, NumberSymbols = 13, NumberFormats = 14, CurrencyCode = 15, CurrencySymbol = 16, CurrencyName = 17, Currencies = 18, PluralCase = 19, ExtraData = 20 } export declare function ɵlooseIdentical(a: any, b: any): boolean; /** * @suppress {globalThis} */ export declare function ɵmakeDecorator<T>(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (type: Type<T>) => void, typeFn?: (type: Type<T>, ...args: any[]) => void): { new (...args: any[]): any; (...args: any[]): any; (...args: any[]): (cls: any) => any; }; /** * Marks the component as dirty (needing change detection). Marking a component dirty will * schedule a change detection on it at some point in the future. * * Marking an already dirty component as dirty won't do anything. Only one outstanding change * detection can be scheduled per component tree. * * @param component Component to mark as dirty. */ export declare function ɵmarkDirty(component: {}): void; export declare type ɵMethodFn = (obj: any, args: any[]) => any; export declare function ɵmod(providers: NgModuleProviderDef[]): NgModuleDefinition; export declare function ɵmpd(flags: ɵNodeFlags, token: any, value: any, deps: ([ɵDepFlags, any] | any)[]): NgModuleProviderDef; export declare function ɵncd(ngContentIndex: null | number, index: number): NodeDef; export declare const ɵNG_COMP_DEF: string; export declare const ɵNG_DIR_DEF: string; /** * If a directive is diPublic, bloomAdd sets a property on the type with this constant as * the key and the directive's unique ID as the value. This allows us to map directives to their * bloom filter bit for DI. */ export declare const ɵNG_ELEMENT_ID: string; export declare const ɵNG_INJ_DEF: string; export declare const ɵNG_MOD_DEF: string; export declare const ɵNG_PIPE_DEF: string; export declare const ɵNG_PROV_DEF: string; /** * Runtime link information for NgModules. * * This is the internal data structure used by the runtime to assemble components, directives, * pipes, and injectors. * * NOTE: Always use `ɵɵdefineNgModule` function to create this object, * never create the object directly since the shape of this object * can change between versions. */ export declare interface ɵNgModuleDef<T> { /** Token representing the module. Used by DI. */ type: T; /** List of components to bootstrap. */ bootstrap: Type<any>[] | (() => Type<any>[]); /** List of components, directives, and pipes declared by this module. */ declarations: Type<any>[] | (() => Type<any>[]); /** List of modules or `ModuleWithProviders` imported by this module. */ imports: Type<any>[] | (() => Type<any>[]); /** * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this * module. */ exports: Type<any>[] | (() => Type<any>[]); /** * Cached value of computed `transitiveCompileScopes` for this module. * * This should never be read directly, but accessed via `transitiveScopesFor`. */ transitiveCompileScopes: ɵNgModuleTransitiveScopes | null; /** The set of schemas that declare elements to be allowed in the NgModule. */ schemas: SchemaMetadata[] | null; /** Unique ID for the module with which it should be registered. */ id: string | null; } export declare class ɵNgModuleFactory<T> extends NgModuleFactory<T> { moduleType: Type<T>; constructor(moduleType: Type<T>); create(parentInjector: Injector | null): NgModuleRef<T>; } /** * Represents the expansion of an `NgModule` into its scopes. * * A scope is a set of directives and pipes that are visible in a particular context. Each * `NgModule` has two scopes. The `compilation` scope is the set of directives and pipes that will * be recognized in the templates of components declared by the module. The `exported` scope is the * set of directives and pipes exported by a module (that is, module B's exported scope gets added * to module A's compilation scope when module A imports B). */ export declare interface ɵNgModuleTransitiveScopes { compilation: { directives: Set<any>; pipes: Set<any>; }; exported: { directives: Set<any>; pipes: Set<any>; }; schemas: SchemaMetadata[] | null; } export declare interface ɵNgModuleType<T = any> extends Type<T> { ɵmod: ɵNgModuleDef<T>; } export declare interface ɵNO_CHANGE { __brand__: 'NO_CHANGE'; } /** A special value which designates that a value has not changed. */ export declare const ɵNO_CHANGE: ɵNO_CHANGE; /** * Bitmask for NodeDef.flags. * Naming convention: * - `Type...`: flags that are mutually exclusive * - `Cat...`: union of multiple `Type...` (short for category). */ export declare const enum ɵNodeFlags { None = 0, TypeElement = 1, TypeText = 2, ProjectedTemplate = 4, CatRenderNode = 3, TypeNgContent = 8, TypePipe = 16, TypePureArray = 32, TypePureObject = 64, TypePurePipe = 128, CatPureExpression = 224, TypeValueProvider = 256, TypeClassProvider = 512, TypeFactoryProvider = 1024, TypeUseExistingProvider = 2048, LazyProvider = 4096, PrivateProvider = 8192, TypeDirective = 16384, Component = 32768, CatProviderNoDirective = 3840, CatProvider = 20224, OnInit = 65536, OnDestroy = 131072, DoCheck = 262144, OnChanges = 524288, AfterContentInit = 1048576, AfterContentChecked = 2097152, AfterViewInit = 4194304, AfterViewChecked = 8388608, EmbeddedViews = 16777216, ComponentView = 33554432, TypeContentQuery = 67108864, TypeViewQuery = 134217728, StaticQuery = 268435456, DynamicQuery = 536870912, TypeNgModule = 1073741824, CatQuery = 201326592, Types = 201347067 } /** * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls * to framework to perform rendering. */ export declare class ɵNoopNgZone implements NgZone { readonly hasPendingMicrotasks: boolean; readonly hasPendingMacrotasks: boolean; readonly isStable: boolean; readonly onUnstable: EventEmitter<any>; readonly onMicrotaskEmpty: EventEmitter<any>; readonly onStable: EventEmitter<any>; readonly onError: EventEmitter<any>; run(fn: (...args: any[]) => any, applyThis?: any, applyArgs?: any): any; runGuarded(fn: (...args: any[]) => any, applyThis?: any, applyArgs?: any): any; runOutsideAngular(fn: (...args: any[]) => any): any; runTask(fn: (...args: any[]) => any, applyThis?: any, applyArgs?: any, name?: string): any; } export declare const ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR: {}; export declare function ɵnov(view: ViewData, index: number): any; export declare function ɵoverrideComponentView(comp: Type<any>, componentFactory: ComponentFactory<any>): void; export declare function ɵoverrideProvider(override: ProviderOverride): void; export declare function ɵpad(checkIndex: number, argCount: number): NodeDef; /** * Patch the definition of a component with directives and pipes from the compilation scope of * a given module. */ export declare function ɵpatchComponentDefWithScope<C>(componentDef: ɵComponentDef<C>, transitiveScopes: ɵNgModuleTransitiveScopes): void; export declare function ɵpid(flags: ɵNodeFlags, ctor: any, deps: ([ɵDepFlags, any] | any)[]): NodeDef; /** * Runtime link information for Pipes. * * This is an internal data structure used by the renderer to link * pipes into templates. * * NOTE: Always use `definePipe` function to create this object, * never create the object directly since the shape of this object * can change between versions. * * See: {@link definePipe} */ export declare interface ɵPipeDef<T> { /** Token representing the pipe. */ type: Type<T>; /** * Pipe name. * * Used to resolve pipe in templates. */ readonly name: string; /** * Factory function used to create a new pipe instance. Will be null initially. * Populated when the factory is first requested by pipe instantiation logic. */ factory: FactoryFn<T> | null; /** * Whether or not the pipe is pure. * * Pure pipes result only depends on the pipe input and not on internal * state of the pipe. */ readonly pure: boolean; onDestroy: (() => void) | null; } /** * A shared interface which contains an animation player */ export declare interface ɵPlayer { parent?: ɵPlayer | null; state: ɵPlayState; play(): void; pause(): void; finish(): void; destroy(): void; addEventListener(state: ɵPlayState | string, cb: (data?: any) => any): void; } /** * Used as a reference to build a player from a styling template binding * (`[style]` and `[class]`). * * The `fn` function will be called once any styling-related changes are * evaluated on an element and is expected to return a player that will * be then run on the element. * * `[style]`, `[style.prop]`, `[class]` and `[class.name]` template bindings * all accept a `PlayerFactory` as input and this player factories. */ export declare interface ɵPlayerFactory { '__brand__': 'Brand for PlayerFactory that nothing will match'; } /** * Designed to be used as an injection service to capture all animation players. * * When present all animation players will be passed into the flush method below. * This feature is designed to service application-wide animation testing, live * debugging as well as custom animation choreographing tools. */ export declare interface ɵPlayerHandler { /** * Designed to kick off the player at the end of change detection */ flushPlayers(): void; /** * @param player The player that has been scheduled to run within the application. * @param context The context as to where the player was bound to */ queuePlayer(player: ɵPlayer, context: ComponentInstance | DirectiveInstance | HTMLElement): void; } /** * The state of a given player * * Do not change the increasing nature of the numbers since the player * code may compare state by checking if a number is higher or lower than * a certain numeric value. */ export declare const enum ɵPlayState { Pending = 0, Running = 1, Paused = 2, Finished = 100, Destroyed = 200 } export declare function ɵpod(checkIndex: number, propToIndex: { [p: string]: number; }): NodeDef; export declare function ɵppd(checkIndex: number, argCount: number): NodeDef; export declare function ɵprd(flags: ɵNodeFlags, matchedQueries: null | [string | number, ɵQueryValueType][], token: any, value: any, deps: ([ɵDepFlags, any] | any)[]): NodeDef; /** * Publishes a collection of default debug tools onto`window.ng`. * * These functions are available globally when Angular is in development * mode and are automatically stripped away from prod mode is on. */ export declare function ɵpublishDefaultGlobalUtils(): void; /** * Publishes the given function to `window.ng` so that it can be * used from the browser console when an application is not in production. */ export declare function ɵpublishGlobalUtil(name: string, fn: Function): void; export declare function ɵqud(flags: ɵNodeFlags, id: number, bindings: { [propName: string]: ɵQueryBindingType; }): NodeDef; export declare const enum ɵQueryBindingType { First = 0, All = 1 } export declare const enum ɵQueryValueType { ElementRef = 0, RenderElement = 1, TemplateRef = 2, ViewContainerRef = 3, Provider = 4 } export declare class ɵReflectionCapabilities implements PlatformReflectionCapabilities { private _reflect; constructor(reflect?: any); isReflectionEnabled(): boolean; factory<T>(t: Type<T>): (args: any[]) => T; private _ownParameters; parameters(type: Type<any>): any[][]; private _ownAnnotations; annotations(typeOrFunc: Type<any>): any[]; private _ownPropMetadata; propMetadata(typeOrFunc: any): { [key: string]: any[]; }; ownPropMetadata(typeOrFunc: any): { [key: string]: any[]; }; hasLifecycleHook(type: any, lcProperty: string): boolean; guards(type: any): { [key: string]: any; }; getter(name: string): ɵGetterFn; setter(name: string): ɵSetterFn; method(name: string): ɵMethodFn; importUri(type: any): string; resourceUri(type: any): string; resolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any; resolveEnum(enumIdentifier: any, name: string): any; } /** * Register locale data to be used internally by Angular. See the * ["I18n guide"](guide/i18n#i18n-pipes) to know how to import additional locale data. * * The signature `registerLocaleData(data: any, extraData?: any)` is deprecated since v5.1 */ export declare function ɵregisterLocaleData(data: any, localeId?: string | any, extraData?: any): void; /** * Registers a loaded module. Should only be called from generated NgModuleFactory code. * @publicApi */ export declare function ɵregisterModuleFactory(id: string, factory: NgModuleFactory<any>): void; export declare function ɵregisterNgModuleType(ngModuleType: ɵNgModuleType): void; /** * Render3 implementation of {@link viewEngine_ComponentFactory}. */ export declare class ɵRender3ComponentFactory<T> extends ComponentFactory<T> { private componentDef; private ngModule?; selector: string; componentType: Type<any>; ngContentSelectors: string[]; isBoundToModule: boolean; get inputs(): { propName: string; templateName: string; }[]; get outputs(): { propName: string; templateName: string; }[]; /** * @param componentDef The component definition. * @param ngModule The NgModuleRef to which the factory is bound. */ constructor(componentDef: ɵComponentDef<any>, ngModule?: NgModuleRef<any> | undefined); create(injector: Injector, projectableNodes?: any[][] | undefined, rootSelectorOrNode?: any, ngModule?: NgModuleRef<any> | undefined): ComponentRef<T>; } /** * Represents an instance of a Component created via a {@link ComponentFactory}. * * `ComponentRef` provides access to the Component Instance as well other objects related to this * Component Instance and allows you to destroy the Component Instance via the {@link #destroy} * method. * */ export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> { location: ElementRef; private _rootLView; private _tNode; destroyCbs: (() => void)[] | null; instance: T; hostView: ViewRef_2<T>; changeDetectorRef: ChangeDetectorRef; componentType: Type<T>; constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: ɵangular_packages_core_core_bo, _tNode: ɵangular_packages_core_core_be | TContainerNode | TElementContainerNode); get injector(): Injector; destroy(): void; onDestroy(callback: () => void): void; } export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements InternalNgModuleRef<T> { _parent: Injector | null; _bootstrapComponents: Type<any>[]; _r3Injector: R3Injector; injector: Injector; instance: T; destroyCbs: (() => void)[] | null; constructor(ngModuleType: Type<T>, _parent: Injector | null); get(token: any, notFoundValue?: any, injectFlags?: InjectFlags): any; get componentFactoryResolver(): ComponentFactoryResolver; destroy(): void; onDestroy(callback: () => void): void; } /** * Bootstraps a Component into an existing host element and returns an instance * of the component. * * Use this function to bootstrap a component into the DOM tree. Each invocation * of this function will create a separate tree of components, injectors and * change detection cycles and lifetimes. To dynamically insert a new component * into an existing tree such that it shares the same injection, change detection * and object lifetime, use {@link ViewContainer#createComponent}. * * @param componentType Component to bootstrap * @param options Optional parameters which control bootstrapping */ export declare function ɵrenderComponent<T>(componentType: ɵComponentType<T> | Type<T>, opts?: CreateComponentOptions): T; /** * Flags passed into template functions to determine which blocks (i.e. creation, update) * should be executed. * * Typically, a template runs both the creation block and the update block on initialization and * subsequent runs only execute the update block. However, dynamically created views require that * the creation block be executed separately from the update block (for backwards compat). */ export declare const enum ɵRenderFlags { Create = 1, Update = 2 } export declare function ɵresetCompiledComponents(): void; /** * Used to resolve resource URLs on `@Component` when used with JIT compilation. * * Example: * ``` * @Component({ * selector: 'my-comp', * templateUrl: 'my-comp.html', // This requires asynchronous resolution * }) * class MyComponent{ * } * * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously. * * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner. * * // Use browser's `fetch()` function as the default resource resolution strategy. * resolveComponentResources(fetch).then(() => { * // After resolution all URLs have been converted into `template` strings. * renderComponent(MyComponent); * }); * * ``` * * NOTE: In AOT the resolution happens during compilation, and so there should be no need * to call this method outside JIT mode. * * @param resourceResolver a function which is responsible for returning a `Promise` to the * contents of the resolved URL. Browser's `fetch()` method is a good default implementation. */ export declare function ɵresolveComponentResources(resourceResolver: (url: string) => (Promise<string | { text(): Promise<string>; }>)): Promise<void>; /** * Marker interface for a value that's safe to use as HTML. * * @publicApi */ export declare interface ɵSafeHtml extends ɵSafeValue { } /** * Marker interface for a value that's safe to use as a URL to load executable code from. * * @publicApi */ export declare interface ɵSafeResourceUrl extends ɵSafeValue { } /** * Marker interface for a value that's safe to use as JavaScript. * * @publicApi */ export declare interface ɵSafeScript extends ɵSafeValue { } /** * Marker interface for a value that's safe to use as style (CSS). * * @publicApi */ export declare interface ɵSafeStyle extends ɵSafeValue { } /** * Marker interface for a value that's safe to use as a URL linking to a document. * * @publicApi */ export declare interface ɵSafeUrl extends ɵSafeValue { } /** * Marker interface for a value that's safe to use in a particular context. * * @publicApi */ export declare interface ɵSafeValue { } /** * Adds decorator, constructor, and property metadata to a given type via static metadata fields * on the type. * * These metadata fields can later be read with Angular's `ReflectionCapabilities` API. * * Calls to `setClassMetadata` can be marked as pure, resulting in the metadata assignments being * tree-shaken away during production builds. */ export declare function ɵsetClassMetadata(type: Type<any>, decorators: any[] | null, ctorParameters: (() => any[]) | null, propDecorators: { [field: string]: any; } | null): void; export declare function ɵsetCurrentInjector(injector: Injector | null | undefined): Injector | undefined | null; /** * Tell ivy what the `document` is for this platform. * * It is only necessary to call this if the current platform is not a browser. * * @param document The object representing the global `document` in this environment. */ export declare function ɵsetDocument(document: Document | undefined): void; /** * Sets the locale id that will be used for translations and ICU expressions. * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine * but is now defined as a global value. * * @param localeId */ export declare function ɵsetLocaleId(localeId: string): void; export declare type ɵSetterFn = (obj: any, value: any) => void; /** Store a value in the `data` at a given `index`. */ export declare function ɵstore<T>(tView: TView, lView: ɵangular_packages_core_core_bo, index: number, value: T): void; export declare function ɵstringify(token: any): string; export declare const ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__: typeof injectChangeDetectorRef; export declare const ɵSWITCH_COMPILE_COMPONENT__POST_R3__: typeof ɵcompileComponent; export declare const ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__: typeof ɵcompileDirective; export declare const ɵSWITCH_COMPILE_INJECTABLE__POST_R3__: typeof compileInjectable; export declare const ɵSWITCH_COMPILE_NGMODULE__POST_R3__: typeof ɵcompileNgModule; export declare const ɵSWITCH_COMPILE_PIPE__POST_R3__: typeof ɵcompilePipe; export declare const ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__: typeof injectElementRef; export declare const ɵSWITCH_IVY_ENABLED__POST_R3__ = true; export declare const ɵSWITCH_RENDERER2_FACTORY__POST_R3__: typeof injectRenderer2; export declare const ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__: typeof injectTemplateRef; export declare const ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__: typeof injectViewContainerRef; export declare function ɵted(checkIndex: number, ngContentIndex: number | null, staticText: string[]): NodeDef; /** * Compute the pair of transitive scopes (compilation scope and exported scope) for a given module. * * By default this operation is memoized and the result is cached on the module's definition. You * can avoid memoization and previously stored results (if available) by providing the second * argument with the `true` value (forcing transitive scopes recalculation). * * This function can be called on modules with components that have not fully compiled yet, but the * result should not be used until they have. * * @param moduleType module that transitive scope should be calculated for. * @param forceRecalc flag that indicates whether previously calculated and memoized values should * be ignored and transitive scope to be fully recalculated. */ export declare function ɵtransitiveScopesFor<T>(moduleType: Type<T>, forceRecalc?: boolean): ɵNgModuleTransitiveScopes; /** * Helper function to remove all the locale data from `LOCALE_DATA`. */ export declare function ɵunregisterLocaleData(): void; export declare function ɵunv(view: ViewData, nodeIdx: number, bindingIdx: number, value: any): any; export declare function ɵunwrapSafeValue(value: ɵSafeValue): string; export declare function ɵunwrapSafeValue<T>(value: T): T; export declare function ɵvid(flags: ɵViewFlags, nodes: NodeDef[], updateDirectives?: null | ViewUpdateFn, updateRenderer?: null | ViewUpdateFn): ɵViewDefinition; export declare interface ɵViewDefinition extends Definition<ViewDefinitionFactory> { flags: ɵViewFlags; updateDirectives: ViewUpdateFn; updateRenderer: ViewUpdateFn; handleEvent: ViewHandleEventFn; /** * Order: Depth first. * Especially providers are before elements / anchors. */ nodes: NodeDef[]; /** aggregated NodeFlags for all nodes **/ nodeFlags: ɵNodeFlags; rootNodeFlags: ɵNodeFlags; lastRenderRootNode: NodeDef | null; bindingCount: number; outputCount: number; /** * Binary or of all query ids that are matched by one of the nodes. * This includes query ids from templates as well. * Used as a bloom filter. */ nodeMatchedQueries: number; } /** * Bitmask for ViewDefinition.flags. */ export declare const enum ɵViewFlags { None = 0, OnPush = 2 } /** * Wait on component until it is rendered. * * This function returns a `Promise` which is resolved when the component's * change detection is executed. This is determined by finding the scheduler * associated with the `component`'s render tree and waiting until the scheduler * flushes. If nothing is scheduled, the function returns a resolved promise. * * Example: * ``` * await whenRendered(myComponent); * ``` * * @param component Component to wait upon * @returns Promise which resolves when the component is rendered. */ export declare function ɵwhenRendered(component: any): Promise<null>; /** * Advances to an element for later binding instructions. * * Used in conjunction with instructions like {@link property} to act on elements with specified * indices, for example those created with {@link element} or {@link elementStart}. * * ```ts * (rf: RenderFlags, ctx: any) => { * if (rf & 1) { * text(0, 'Hello'); * text(1, 'Goodbye') * element(2, 'div'); * } * if (rf & 2) { * advance(2); // Advance twice to the <div>. * property('title', 'test'); * } * } * ``` * @param delta Number of elements to advance forwards by. * * @codeGenApi */ export declare function ɵɵadvance(delta: number): void; /** * Updates the value of or removes a bound attribute on an Element. * * Used in the case of `[attr.title]="value"` * * @param name name The name of the attribute. * @param value value The attribute is removed when value is `null` or `undefined`. * Otherwise the attribute value is set to the stringified value. * @param sanitizer An optional function used to sanitize the value. * @param namespace Optional namespace to use when setting the attribute. * * @codeGenApi */ export declare function ɵɵattribute(name: string, value: any, sanitizer?: SanitizerFn | null, namespace?: string): typeof ɵɵattribute; /** * * Update an interpolated attribute on an element with single bound value surrounded by text. * * Used when the value passed to a property has 1 interpolated value in it: * * ```html * <div attr.title="prefix{{v0}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate1(attrName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate1; /** * * Update an interpolated attribute on an element with 2 bound values surrounded by text. * * Used when the value passed to a property has 2 interpolated values in it: * * ```html * <div attr.title="prefix{{v0}}-{{v1}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate2(attrName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate2; /** * * Update an interpolated attribute on an element with 3 bound values surrounded by text. * * Used when the value passed to a property has 3 interpolated values in it: * * ```html * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate3( * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate3(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate3; /** * * Update an interpolated attribute on an element with 4 bound values surrounded by text. * * Used when the value passed to a property has 4 interpolated values in it: * * ```html * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate4( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate4(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate4; /** * * Update an interpolated attribute on an element with 5 bound values surrounded by text. * * Used when the value passed to a property has 5 interpolated values in it: * * ```html * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate5( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate5(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate5; /** * * Update an interpolated attribute on an element with 6 bound values surrounded by text. * * Used when the value passed to a property has 6 interpolated values in it: * * ```html * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate6( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate6(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate6; /** * * Update an interpolated attribute on an element with 7 bound values surrounded by text. * * Used when the value passed to a property has 7 interpolated values in it: * * ```html * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate7( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate7(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate7; /** * * Update an interpolated attribute on an element with 8 bound values surrounded by text. * * Used when the value passed to a property has 8 interpolated values in it: * * ```html * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolate8( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix'); * ``` * * @param attrName The name of the attribute to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param i6 Static value used for concatenation only. * @param v7 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolate8(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate8; /** * Update an interpolated attribute on an element with 8 or more bound values surrounded by text. * * Used when the number of interpolated values exceeds 7. * * ```html * <div * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵattributeInterpolateV( * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9, * 'suffix']); * ``` * * @param attrName The name of the attribute to update. * @param values The a collection of values and the strings in-between those values, beginning with * a string prefix and ending with a string suffix. * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`) * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵattributeInterpolateV(attrName: string, values: any[], sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolateV; /** * Update class bindings using an object literal or class-string on an element. * * This instruction is meant to apply styling via the `[class]="exp"` template bindings. * When classes are applied to the element they will then be updated with * respect to any styles/classes set via `classProp`. If any * classes are set to falsy then they will be removed from the element. * * Note that the styling instruction will not be applied until `stylingApply` is called. * Note that this will the provided classMap value to the host element if this function is called * within a host binding. * * @param classes A key/value map or string of CSS classes that will be added to the * given element. Any missing classes (that have already been applied to the element * beforehand) will be removed (unset) from the element's list of CSS classes. * * @codeGenApi */ export declare function ɵɵclassMap(classes: { [className: string]: boolean | undefined | null; } | string | undefined | null): void; /** * * Update an interpolated class on an element with single bound value surrounded by text. * * Used when the value passed to a property has 1 interpolated value in it: * * ```html * <div class="prefix{{v0}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate1('prefix', v0, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate1(prefix: string, v0: any, suffix: string): void; /** * * Update an interpolated class on an element with 2 bound values surrounded by text. * * Used when the value passed to a property has 2 interpolated values in it: * * ```html * <div class="prefix{{v0}}-{{v1}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate2('prefix', v0, '-', v1, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void; /** * * Update an interpolated class on an element with 3 bound values surrounded by text. * * Used when the value passed to a property has 3 interpolated values in it: * * ```html * <div class="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate3( * 'prefix', v0, '-', v1, '-', v2, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void; /** * * Update an interpolated class on an element with 4 bound values surrounded by text. * * Used when the value passed to a property has 4 interpolated values in it: * * ```html * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate4( * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void; /** * * Update an interpolated class on an element with 5 bound values surrounded by text. * * Used when the value passed to a property has 5 interpolated values in it: * * ```html * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate5( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): void; /** * * Update an interpolated class on an element with 6 bound values surrounded by text. * * Used when the value passed to a property has 6 interpolated values in it: * * ```html * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate6( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): void; /** * * Update an interpolated class on an element with 7 bound values surrounded by text. * * Used when the value passed to a property has 7 interpolated values in it: * * ```html * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate7( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): void; /** * * Update an interpolated class on an element with 8 bound values surrounded by text. * * Used when the value passed to a property has 8 interpolated values in it: * * ```html * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolate8( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix'); * ``` * * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param i6 Static value used for concatenation only. * @param v7 Value checked for change. * @param suffix Static value used for concatenation only. * @codeGenApi */ export declare function ɵɵclassMapInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): void; /** * Update an interpolated class on an element with 8 or more bound values surrounded by text. * * Used when the number of interpolated values exceeds 7. * * ```html * <div * class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵclassMapInterpolateV( * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9, * 'suffix']); * ``` *. * @param values The a collection of values and the strings in-between those values, beginning with * a string prefix and ending with a string suffix. * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`) * @codeGenApi */ export declare function ɵɵclassMapInterpolateV(values: any[]): void; /** * Update a class binding on an element with the provided value. * * This instruction is meant to handle the `[class.foo]="exp"` case and, * therefore, the class binding itself must already be allocated using * `styling` within the creation block. * * @param prop A valid CSS class (only one). * @param value A true/false value which will turn the class on or off. * * Note that this will apply the provided class value to the host element if this function * is called within a host binding function. * * @codeGenApi */ export declare function ɵɵclassProp(className: string, value: boolean | undefined | null): typeof ɵɵclassProp; /** * @codeGenApi */ export declare type ɵɵComponentDefWithMeta<T, Selector extends String, ExportAs extends string[], InputMap extends { [key: string]: string; }, OutputMap extends { [key: string]: string; }, QueryFields extends string[]> = ɵComponentDef<T>; /** * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component. * * This instruction is for compatibility purposes and is designed to ensure that a * synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered * in the component's renderer. Normally all host listeners are evaluated with the * parent component's renderer, but, in the case of animation @triggers, they need * to be evaluated with the sub component's renderer (because that's where the * animation triggers are defined). * * Do not use this instruction as a replacement for `listener`. This instruction * only exists to ensure compatibility with the ViewEngine's host binding behavior. * * @param eventName Name of the event * @param listenerFn The function to be called when event emits * @param useCapture Whether or not to use capture in event listener * @param eventTargetResolver Function that returns global target information in case this listener * should be attached to a global object like window, document or body * * @codeGenApi */ export declare function ɵɵcomponentHostSyntheticListener(eventName: string, listenerFn: (e?: any) => any, useCapture?: boolean, eventTargetResolver?: GlobalTargetResolver): typeof ɵɵcomponentHostSyntheticListener; /** * Creates an LContainer for inline views, e.g. * * % if (showing) { * <div></div> * % } * * @param index The index of the container in the data array * * @codeGenApi */ export declare function ɵɵcontainer(index: number): void; /** * Marks the end of the LContainer. * * Marking the end of LContainer is the time when to child views get inserted or removed. * * @codeGenApi */ export declare function ɵɵcontainerRefreshEnd(): void; /** * Sets a container up to receive views. * * @param index The index of the container in the data array * * @codeGenApi */ export declare function ɵɵcontainerRefreshStart(index: number): void; /** * Registers a QueryList, associated with a content query, for later refresh (part of a view * refresh). * * @param directiveIndex Current directive index * @param predicate The type for which the query will search * @param descend Whether or not to descend into children * @param read What to save in the query * @returns QueryList<T> * * @codeGenApi */ export declare function ɵɵcontentQuery<T>(directiveIndex: number, predicate: Type<any> | string[], descend: boolean, read?: any): void; /** * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a * definition. * * This exists primarily to support ngcc migration of an existing View Engine pattern, where an * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it * generates a skeleton definition on the child class, and applies this feature. * * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition, * including things like the component template function. * * @param definition The definition of a child class which inherits from a parent class with its * own definition. * * @codeGenApi */ export declare function ɵɵCopyDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void; /** * The default style sanitizer will handle sanitization for style properties by * sanitizing any CSS property that can include a `url` value (usually image-based properties) * * @publicApi */ export declare const ɵɵdefaultStyleSanitizer: StyleSanitizeFn; /** * Create a component definition object. * * * # Example * ``` * class MyDirective { * // Generated by Angular Template Compiler * // [Symbol] syntax will not be supported by TypeScript until v2.7 * static ɵcmp = defineComponent({ * ... * }); * } * ``` * @codeGenApi */ export declare function ɵɵdefineComponent<T>(componentDefinition: { /** * Directive type, needed to configure the injector. */ type: Type<T>; /** The selectors that will be used to match nodes to this component. */ selectors?: ɵCssSelectorList; /** * The number of nodes, local refs, and pipes in this component template. * * Used to calculate the length of this component's LView array, so we * can pre-fill the array and set the binding start index. */ decls: number; /** * The number of bindings in this component template (including pure fn bindings). * * Used to calculate the length of this component's LView array, so we * can pre-fill the array and set the host binding start index. */ vars: number; /** * A map of input names. * * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`. * * Given: * ``` * class MyComponent { * @Input() * publicInput1: string; * * @Input('publicInput2') * declaredInput2: string; * } * ``` * * is described as: * ``` * { * publicInput1: 'publicInput1', * declaredInput2: ['publicInput2', 'declaredInput2'], * } * ``` * * Which the minifier may translate to: * ``` * { * minifiedPublicInput1: 'publicInput1', * minifiedDeclaredInput2: ['publicInput2', 'declaredInput2'], * } * ``` * * This allows the render to re-construct the minified, public, and declared names * of properties. * * NOTE: * - Because declared and public name are usually same we only generate the array * `['public', 'declared']` format when they differ. * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has * inconsistent behavior in that it uses declared names rather than minified or public. For * this reason `NgOnChanges` will be deprecated and removed in future version and this * API will be simplified to be consistent with `output`. */ inputs?: { [P in keyof T]?: string | [string, string]; }; /** * A map of output names. * * The format is in: `{[actualPropertyName: string]:string}`. * * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`. * * This allows the render to re-construct the minified and non-minified names * of properties. */ outputs?: { [P in keyof T]?: string; }; /** * Function executed by the parent template to allow child directive to apply host bindings. */ hostBindings?: HostBindingsFunction<T>; /** * The number of bindings in this directive `hostBindings` (including pure fn bindings). * * Used to calculate the length of the component's LView array, so we * can pre-fill the array and set the host binding start index. */ hostVars?: number; /** * Assign static attribute values to a host element. * * This property will assign static attribute values as well as class and style * values to a host element. Since attribute values can consist of different types of values, the * `hostAttrs` array must include the values in the following format: * * attrs = [ * // static attributes (like `title`, `name`, `id`...) * attr1, value1, attr2, value, * * // a single namespace value (like `x:id`) * NAMESPACE_MARKER, namespaceUri1, name1, value1, * * // another single namespace value (like `x:name`) * NAMESPACE_MARKER, namespaceUri2, name2, value2, * * // a series of CSS classes that will be applied to the element (no spaces) * CLASSES_MARKER, class1, class2, class3, * * // a series of CSS styles (property + value) that will be applied to the element * STYLES_MARKER, prop1, value1, prop2, value2 * ] * * All non-class and non-style attributes must be defined at the start of the list * first before all class and style values are set. When there is a change in value * type (like when classes and styles are introduced) a marker must be used to separate * the entries. The marker values themselves are set via entries found in the * [AttributeMarker] enum. */ hostAttrs?: TAttributes; /** * Function to create instances of content queries associated with a given directive. */ contentQueries?: ContentQueriesFunction<T>; /** * Defines the name that can be used in the template to assign this directive to a variable. * * See: {@link Directive.exportAs} */ exportAs?: string[]; /** * Template function use for rendering DOM. * * This function has following structure. * * ``` * function Template<T>(ctx:T, creationMode: boolean) { * if (creationMode) { * // Contains creation mode instructions. * } * // Contains binding update instructions * } * ``` * * Common instructions are: * Creation mode instructions: * - `elementStart`, `elementEnd` * - `text` * - `container` * - `listener` * * Binding update instructions: * - `bind` * - `elementAttribute` * - `elementProperty` * - `elementClass` * - `elementStyle` * */ template: ComponentTemplate<T>; /** * Constants for the nodes in the component's view. * Includes attribute arrays, local definition arrays etc. */ consts?: TConstants; /** * An array of `ngContent[selector]` values that were found in the template. */ ngContentSelectors?: string[]; /** * Additional set of instructions specific to view query processing. This could be seen as a * set of instruction to be inserted into the template function. * * Query-related instructions need to be pulled out to a specific function as a timing of * execution is different as compared to all other instructions (after change detection hooks but * before view hooks). */ viewQuery?: ViewQueriesFunction<T> | null; /** * A list of optional features to apply. * * See: {@link NgOnChangesFeature}, {@link ProvidersFeature} */ features?: ComponentDefFeature[]; /** * Defines template and style encapsulation options available for Component's {@link Component}. */ encapsulation?: ViewEncapsulation; /** * Defines arbitrary developer-defined data to be stored on a renderer instance. * This is useful for renderers that delegate to other renderers. * * see: animation */ data?: { [kind: string]: any; }; /** * A set of styles that the component needs to be present for component to render correctly. */ styles?: string[]; /** * The strategy that the default change detector uses to detect changes. * When set, takes effect the next time change detection is triggered. */ changeDetection?: ChangeDetectionStrategy; /** * Registry of directives and components that may be found in this component's view. * * The property is either an array of `DirectiveDef`s or a function which returns the array of * `DirectiveDef`s. The function is necessary to be able to support forward declarations. */ directives?: DirectiveTypesOrFactory | null; /** * Registry of pipes that may be found in this component's view. * * The property is either an array of `PipeDefs`s or a function which returns the array of * `PipeDefs`s. The function is necessary to be able to support forward declarations. */ pipes?: PipeTypesOrFactory | null; /** * The set of schemas that declare elements to be allowed in the component's template. */ schemas?: SchemaMetadata[] | null; }): never; /** * Create a directive definition object. * * # Example * ```ts * class MyDirective { * // Generated by Angular Template Compiler * // [Symbol] syntax will not be supported by TypeScript until v2.7 * static ɵdir = ɵɵdefineDirective({ * ... * }); * } * ``` * * @codeGenApi */ export declare const ɵɵdefineDirective: <T>(directiveDefinition: { /** * Directive type, needed to configure the injector. */ type: Type<T>; /** The selectors that will be used to match nodes to this directive. */ selectors?: ɵCssSelectorList | undefined; /** * A map of input names. * * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`. * * Given: * ``` * class MyComponent { * @Input() * publicInput1: string; * * @Input('publicInput2') * declaredInput2: string; * } * ``` * * is described as: * ``` * { * publicInput1: 'publicInput1', * declaredInput2: ['declaredInput2', 'publicInput2'], * } * ``` * * Which the minifier may translate to: * ``` * { * minifiedPublicInput1: 'publicInput1', * minifiedDeclaredInput2: [ 'publicInput2', 'declaredInput2'], * } * ``` * * This allows the render to re-construct the minified, public, and declared names * of properties. * * NOTE: * - Because declared and public name are usually same we only generate the array * `['declared', 'public']` format when they differ. * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has * inconsistent behavior in that it uses declared names rather than minified or public. For * this reason `NgOnChanges` will be deprecated and removed in future version and this * API will be simplified to be consistent with `output`. */ inputs?: { [P in keyof T]?: string | [string, string] | undefined; } | undefined; /** * A map of output names. * * The format is in: `{[actualPropertyName: string]:string}`. * * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`. * * This allows the render to re-construct the minified and non-minified names * of properties. */ outputs?: { [P_1 in keyof T]?: string | undefined; } | undefined; /** * A list of optional features to apply. * * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}, {@link InheritDefinitionFeature} */ features?: DirectiveDefFeature[] | undefined; /** * Function executed by the parent template to allow child directive to apply host bindings. */ hostBindings?: HostBindingsFunction<T> | undefined; /** * The number of bindings in this directive `hostBindings` (including pure fn bindings). * * Used to calculate the length of the component's LView array, so we * can pre-fill the array and set the host binding start index. */ hostVars?: number | undefined; /** * Assign static attribute values to a host element. * * This property will assign static attribute values as well as class and style * values to a host element. Since attribute values can consist of different types of values, the * `hostAttrs` array must include the values in the following format: * * attrs = [ * // static attributes (like `title`, `name`, `id`...) * attr1, value1, attr2, value, * * // a single namespace value (like `x:id`) * NAMESPACE_MARKER, namespaceUri1, name1, value1, * * // another single namespace value (like `x:name`) * NAMESPACE_MARKER, namespaceUri2, name2, value2, * * // a series of CSS classes that will be applied to the element (no spaces) * CLASSES_MARKER, class1, class2, class3, * * // a series of CSS styles (property + value) that will be applied to the element * STYLES_MARKER, prop1, value1, prop2, value2 * ] * * All non-class and non-style attributes must be defined at the start of the list * first before all class and style values are set. When there is a change in value * type (like when classes and styles are introduced) a marker must be used to separate * the entries. The marker values themselves are set via entries found in the * [AttributeMarker] enum. */ hostAttrs?: TAttributes | undefined; /** * Function to create instances of content queries associated with a given directive. */ contentQueries?: ContentQueriesFunction<T> | undefined; /** * Additional set of instructions specific to view query processing. This could be seen as a * set of instructions to be inserted into the template function. */ viewQuery?: ViewQueriesFunction<T> | null | undefined; /** * Defines the name that can be used in the template to assign this directive to a variable. * * See: {@link Directive.exportAs} */ exportAs?: string[] | undefined; }) => never; /** * Construct an `InjectableDef` which defines how a token will be constructed by the DI system, and * in which injectors (if any) it will be available. * * This should be assigned to a static `ɵprov` field on a type, which will then be an * `InjectableType`. * * Options: * * `providedIn` determines which injectors will include the injectable, by either associating it * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be * provided in the `'root'` injector, which will be the application-level injector in most apps. * * `factory` gives the zero argument function which will create an instance of the injectable. * The factory can call `inject` to access the `Injector` and request injection of dependencies. * * @codeGenApi */ export declare function ɵɵdefineInjectable<T>(opts: { token: unknown; providedIn?: Type<any> | 'root' | 'platform' | 'any' | null; factory: () => T; }): never; /** * Construct an `InjectorDef` which configures an injector. * * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an * `InjectorType`. * * Options: * * * `factory`: an `InjectorType` is an instantiable type, so a zero argument `factory` function to * create the type must be provided. If that factory function needs to inject arguments, it can * use the `inject` function. * * `providers`: an optional array of providers to add to the injector. Each provider must * either have a factory or point to a type which has a `ɵprov` static property (the * type must be an `InjectableType`). * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s * whose providers will also be added to the injector. Locally provided types will override * providers from imports. * * @publicApi */ export declare function ɵɵdefineInjector(options: { factory: () => any; providers?: any[]; imports?: any[]; }): never; /** * @codeGenApi */ export declare function ɵɵdefineNgModule<T>(def: { /** Token representing the module. Used by DI. */ type: T; /** List of components to bootstrap. */ bootstrap?: Type<any>[] | (() => Type<any>[]); /** List of components, directives, and pipes declared by this module. */ declarations?: Type<any>[] | (() => Type<any>[]); /** List of modules or `ModuleWithProviders` imported by this module. */ imports?: Type<any>[] | (() => Type<any>[]); /** * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this * module. */ exports?: Type<any>[] | (() => Type<any>[]); /** The set of schemas that declare elements to be allowed in the NgModule. */ schemas?: SchemaMetadata[] | null; /** Unique ID for the module that is used with `getModuleFactory`. */ id?: string | null; }): never; /** * Create a pipe definition object. * * # Example * ``` * class MyPipe implements PipeTransform { * // Generated by Angular Template Compiler * static ɵpipe = definePipe({ * ... * }); * } * ``` * @param pipeDef Pipe definition generated by the compiler * * @codeGenApi */ export declare function ɵɵdefinePipe<T>(pipeDef: { /** Name of the pipe. Used for matching pipes in template to pipe defs. */ name: string; /** Pipe class reference. Needed to extract pipe lifecycle hooks. */ type: Type<T>; /** Whether the pipe is pure. */ pure?: boolean; }): never; /** * @codeGenApi */ export declare type ɵɵDirectiveDefWithMeta<T, Selector extends string, ExportAs extends string[], InputMap extends { [key: string]: string; }, OutputMap extends { [key: string]: string; }, QueryFields extends string[]> = ɵDirectiveDef<T>; /** * Returns the value associated to the given token from the injectors. * * `directiveInject` is intended to be used for directive, component and pipe factories. * All other injection use `inject` which does not walk the node injector tree. * * Usage example (in factory function): * * ```ts * class SomeDirective { * constructor(directive: DirectiveA) {} * * static ɵdir = ɵɵdefineDirective({ * type: SomeDirective, * factory: () => new SomeDirective(ɵɵdirectiveInject(DirectiveA)) * }); * } * ``` * @param token the type or token to inject * @param flags Injection flags * @returns the value from the injector or `null` when not found * * @codeGenApi */ export declare function ɵɵdirectiveInject<T>(token: Type<T> | InjectionToken<T>): T; export declare function ɵɵdirectiveInject<T>(token: Type<T> | InjectionToken<T>, flags: InjectFlags): T; /** * Disables directive matching on element. * * * Example: * ``` * <my-comp my-directive> * Should match component / directive. * </my-comp> * <div ngNonBindable> * <!-- ɵɵdisableBindings() --> * <my-comp my-directive> * Should not match component / directive because we are in ngNonBindable. * </my-comp> * <!-- ɵɵenableBindings() --> * </div> * ``` * * @codeGenApi */ export declare function ɵɵdisableBindings(): void; /** * Creates an empty element using {@link elementStart} and {@link elementEnd} * * @param index Index of the element in the data array * @param name Name of the DOM Node * @param attrsIndex Index of the element's attributes in the `consts` array. * @param localRefsIndex Index of the element's local references in the `consts` array. * * @codeGenApi */ export declare function ɵɵelement(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): void; /** * Creates an empty logical container using {@link elementContainerStart} * and {@link elementContainerEnd} * * @param index Index of the element in the LView array * @param attrsIndex Index of the container attributes in the `consts` array. * @param localRefsIndex Index of the container's local references in the `consts` array. * * @codeGenApi */ export declare function ɵɵelementContainer(index: number, attrsIndex?: number | null, localRefsIndex?: number): void; /** * Mark the end of the <ng-container>. * * @codeGenApi */ export declare function ɵɵelementContainerEnd(): void; /** * Creates a logical container for other nodes (<ng-container>) backed by a comment node in the DOM. * The instruction must later be followed by `elementContainerEnd()` call. * * @param index Index of the element in the LView array * @param attrsIndex Index of the container attributes in the `consts` array. * @param localRefsIndex Index of the container's local references in the `consts` array. * * Even if this instruction accepts a set of attributes no actual attribute values are propagated to * the DOM (as a comment node can't have attributes). Attributes are here only for directive * matching purposes and setting initial inputs of directives. * * @codeGenApi */ export declare function ɵɵelementContainerStart(index: number, attrsIndex?: number | null, localRefsIndex?: number): void; /** * Mark the end of the element. * * @codeGenApi */ export declare function ɵɵelementEnd(): void; /** * Create DOM element. The instruction must later be followed by `elementEnd()` call. * * @param index Index of the element in the LView array * @param name Name of the DOM Node * @param attrsIndex Index of the element's attributes in the `consts` array. * @param localRefsIndex Index of the element's local references in the `consts` array. * * Attributes and localRefs are passed as an array of strings where elements with an even index * hold an attribute name and elements with an odd index hold an attribute value, ex.: * ['id', 'warning5', 'class', 'alert'] * * @codeGenApi */ export declare function ɵɵelementStart(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): void; /** * Marks the end of an embedded view. * * @codeGenApi */ export declare function ɵɵembeddedViewEnd(): void; /** * Marks the start of an embedded view. * * @param viewBlockId The ID of this view * @return boolean Whether or not this view is in creation mode * * @codeGenApi */ export declare function ɵɵembeddedViewStart(viewBlockId: number, decls: number, vars: number): ɵRenderFlags; /** * Enables directive matching on elements. * * * Example: * ``` * <my-comp my-directive> * Should match component / directive. * </my-comp> * <div ngNonBindable> * <!-- ɵɵdisableBindings() --> * <my-comp my-directive> * Should not match component / directive because we are in ngNonBindable. * </my-comp> * <!-- ɵɵenableBindings() --> * </div> * ``` * * @codeGenApi */ export declare function ɵɵenableBindings(): void; /** * @codeGenApi */ export declare type ɵɵFactoryDef<T> = () => T; /** * Returns the current OpaqueViewState instance. * * Used in conjunction with the restoreView() instruction to save a snapshot * of the current view and restore it when listeners are invoked. This allows * walking the declaration view tree in listeners to get vars from parent views. * * @codeGenApi */ export declare function ɵɵgetCurrentView(): OpaqueViewState; /** * @codeGenApi */ export declare function ɵɵgetFactoryOf<T>(type: Type<any>): FactoryFn<T> | null; /** * @codeGenApi */ export declare function ɵɵgetInheritedFactory<T>(type: Type<any>): (type: Type<T>) => T; /** * Update a property on a host element. Only applies to native node properties, not inputs. * * Operates on the element selected by index via the {@link select} instruction. * * @param propName Name of property. Because it is going to DOM, this is not subject to * renaming as part of minification. * @param value New value to write. * @param sanitizer An optional function used to sanitize the value. * @returns This function returns itself so that it may be chained * (e.g. `property('name', ctx.name)('title', ctx.title)`) * * @codeGenApi */ export declare function ɵɵhostProperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵhostProperty; /** * * Use this instruction to create a translation block that doesn't contain any placeholder. * It calls both {@link i18nStart} and {@link i18nEnd} in one instruction. * * The translation `message` is the value which is locale specific. The translation string may * contain placeholders which associate inner elements and sub-templates within the translation. * * The translation `message` placeholders are: * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be * interpolated into. The placeholder `index` points to the expression binding index. An optional * `block` that matches the sub-template in which it was declared. * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning * and end of DOM element that were embedded in the original translation block. The placeholder * `index` points to the element index in the template instructions set. An optional `block` that * matches the sub-template in which it was declared. * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be * split up and translated separately in each angular template function. The `index` points to the * `template` instruction index. A `block` that matches the sub-template in which it was declared. * * @param index A unique index of the translation in the static block. * @param message The translation message. * @param subTemplateIndex Optional sub-template index in the `message`. * * @codeGenApi */ export declare function ɵɵi18n(index: number, message: string, subTemplateIndex?: number): void; /** * Updates a translation block or an i18n attribute when the bindings have changed. * * @param index Index of either {@link i18nStart} (translation block) or {@link i18nAttributes} * (i18n attribute) on which it should update the content. * * @codeGenApi */ export declare function ɵɵi18nApply(index: number): void; /** * Marks a list of attributes as translatable. * * @param index A unique index in the static block * @param values * * @codeGenApi */ export declare function ɵɵi18nAttributes(index: number, values: string[]): void; /** * Translates a translation block marked by `i18nStart` and `i18nEnd`. It inserts the text/ICU nodes * into the render tree, moves the placeholder nodes and removes the deleted nodes. * * @codeGenApi */ export declare function ɵɵi18nEnd(): void; /** * Stores the values of the bindings during each update cycle in order to determine if we need to * update the translated nodes. * * @param value The binding's value * @returns This function returns itself so that it may be chained * (e.g. `i18nExp(ctx.name)(ctx.title)`) * * @codeGenApi */ export declare function ɵɵi18nExp<T>(value: T): typeof ɵɵi18nExp; /** * Handles message string post-processing for internationalization. * * Handles message string post-processing by transforming it from intermediate * format (that might contain some markers that we need to replace) to the final * form, consumable by i18nStart instruction. Post processing steps include: * * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�]) * 2. Replace all ICU vars (like "VAR_PLURAL") * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER} * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�) * in case multiple ICUs have the same placeholder name * * @param message Raw translation string for post processing * @param replacements Set of replacements that should be applied * * @returns Transformed string that can be consumed by i18nStart instruction * * @codeGenApi */ export declare function ɵɵi18nPostprocess(message: string, replacements?: { [key: string]: (string | string[]); }): string; /** * Marks a block of text as translatable. * * The instructions `i18nStart` and `i18nEnd` mark the translation block in the template. * The translation `message` is the value which is locale specific. The translation string may * contain placeholders which associate inner elements and sub-templates within the translation. * * The translation `message` placeholders are: * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be * interpolated into. The placeholder `index` points to the expression binding index. An optional * `block` that matches the sub-template in which it was declared. * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning * and end of DOM element that were embedded in the original translation block. The placeholder * `index` points to the element index in the template instructions set. An optional `block` that * matches the sub-template in which it was declared. * - `�!{index}(:{block})�`/`�/!{index}(:{block})�`: *Projection Placeholder*: Marks the * beginning and end of <ng-content> that was embedded in the original translation block. * The placeholder `index` points to the element index in the template instructions set. * An optional `block` that matches the sub-template in which it was declared. * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be * split up and translated separately in each angular template function. The `index` points to the * `template` instruction index. A `block` that matches the sub-template in which it was declared. * * @param index A unique index of the translation in the static block. * @param message The translation message. * @param subTemplateIndex Optional sub-template index in the `message`. * * @codeGenApi */ export declare function ɵɵi18nStart(index: number, message: string, subTemplateIndex?: number): void; /** * Merges the definition from a super class to a sub class. * @param definition The definition that is a SubClass of another directive of component * * @codeGenApi */ export declare function ɵɵInheritDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void; /** * Generated instruction: Injects a token from the currently active injector. * * Must be used in the context of a factory function such as one defined for an * `InjectionToken`. Throws an error if not called from such a context. * * (Additional documentation moved to `inject`, as it is the public API, and an alias for this instruction) * * @see inject * @codeGenApi */ export declare function ɵɵinject<T>(token: Type<T> | InjectionToken<T>): T; export declare function ɵɵinject<T>(token: Type<T> | InjectionToken<T>, flags?: InjectFlags): T | null; /** * Information about how a type or `InjectionToken` interfaces with the DI system. * * At a minimum, this includes a `factory` which defines how to create the given type `T`, possibly * requesting injection of other types if necessary. * * Optionally, a `providedIn` parameter specifies that the given type belongs to a particular * `InjectorDef`, `NgModule`, or a special scope (e.g. `'root'`). A value of `null` indicates * that the injectable does not belong to any scope. * * NOTE: This is a private type and should not be exported * * @publicApi */ export declare interface ɵɵInjectableDef<T> { /** * Specifies that the given type belongs to a particular injector: * - `InjectorType` such as `NgModule`, * - `'root'` the root injector * - `'any'` all injectors. * - `null`, does not belong to any injector. Must be explicitly listed in the injector * `providers`. */ providedIn: InjectorType<any> | 'root' | 'platform' | 'any' | null; /** * The token to which this definition belongs. * * Note that this may not be the same as the type that the `factory` will create. */ token: unknown; /** * Factory method to execute to create an instance of the injectable. */ factory: (t?: Type<any>) => T; /** * In a case of no explicit injector, a location where the instance of the injectable is stored. */ value: T | undefined; } /** * Facade for the attribute injection from DI. * * @codeGenApi */ export declare function ɵɵinjectAttribute(attrNameToInject: string): string | null; /** * Information about the providers to be included in an `Injector` as well as how the given type * which carries the information should be created by the DI system. * * An `InjectorDef` can import other types which have `InjectorDefs`, forming a deep nested * structure of providers with a defined priority (identically to how `NgModule`s also have * an import/dependency structure). * * NOTE: This is a private type and should not be exported * * @publicApi */ export declare interface ɵɵInjectorDef<T> { factory: () => T; providers: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | any[])[]; imports: (InjectorType<any> | InjectorTypeWithProviders<any>)[]; } /** * Returns the appropriate `ChangeDetectorRef` for a pipe. * * @codeGenApi */ export declare function ɵɵinjectPipeChangeDetectorRef(flags?: InjectFlags): ChangeDetectorRef | null; /** * Throws an error indicating that a factory function could not be generated by the compiler for a * particular class. * * This instruction allows the actual error message to be optimized away when ngDevMode is turned * off, saving bytes of generated code while still providing a good experience in dev mode. * * The name of the class is not mentioned here, but will be in the generated factory function name * and thus in the stack trace. * * @codeGenApi */ export declare function ɵɵinvalidFactory(): never; /** * Throws an error indicating that a factory function could not be generated by the compiler for a * particular class. * * This instruction allows the actual error message to be optimized away when ngDevMode is turned * off, saving bytes of generated code while still providing a good experience in dev mode. * * The name of the class is not mentioned here, but will be in the generated factory function name * and thus in the stack trace. * * @codeGenApi */ export declare function ɵɵinvalidFactoryDep(index: number): never; /** * Adds an event listener to the current node. * * If an output exists on one of the node's directives, it also subscribes to the output * and saves the subscription for later cleanup. * * @param eventName Name of the event * @param listenerFn The function to be called when event emits * @param useCapture Whether or not to use capture in event listener * @param eventTargetResolver Function that returns global target information in case this listener * should be attached to a global object like window, document or body * * @codeGenApi */ export declare function ɵɵlistener(eventName: string, listenerFn: (e?: any) => any, useCapture?: boolean, eventTargetResolver?: GlobalTargetResolver): typeof ɵɵlistener; /** * Loads a QueryList corresponding to the current view or content query. * * @codeGenApi */ export declare function ɵɵloadQuery<T>(): QueryList<T>; /** * Sets the namespace used to create elements to `null`, which forces element creation to use * `createElement` rather than `createElementNS`. * * @codeGenApi */ export declare function ɵɵnamespaceHTML(): void; /** * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state. * * @codeGenApi */ export declare function ɵɵnamespaceMathML(): void; /** * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state. * * @codeGenApi */ export declare function ɵɵnamespaceSVG(): void; /** * Retrieves a context at the level specified and saves it as the global, contextViewData. * Will get the next level up if level is not specified. * * This is used to save contexts of parent views so they can be bound in embedded views, or * in conjunction with reference() to bind a ref from a parent view. * * @param level The relative level of the view from which to grab context compared to contextVewData * @returns context * * @codeGenApi */ export declare function ɵɵnextContext<T = any>(level?: number): T; /** * @publicApi */ export declare type ɵɵNgModuleDefWithMeta<T, Declarations, Imports, Exports> = ɵNgModuleDef<T>; /** * The NgOnChangesFeature decorates a component with support for the ngOnChanges * lifecycle hook, so it should be included in any component that implements * that hook. * * If the component or directive uses inheritance, the NgOnChangesFeature MUST * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise * inherited properties will not be propagated to the ngOnChanges lifecycle * hook. * * Example usage: * * ``` * static ɵcmp = defineComponent({ * ... * inputs: {name: 'publicName'}, * features: [NgOnChangesFeature()] * }); * ``` * * @codeGenApi */ export declare function ɵɵNgOnChangesFeature<T>(): DirectiveDefFeature; /** * Create a pipe. * * @param index Pipe index where the pipe will be stored. * @param pipeName The name of the pipe * @returns T the instance of the pipe. * * @codeGenApi */ export declare function ɵɵpipe(index: number, pipeName: string): any; /** * Invokes a pipe with 1 arguments. * * This instruction acts as a guard to {@link PipeTransform#transform} invoking * the pipe only when an input to the pipe changes. * * @param index Pipe index where the pipe was stored on creation. * @param slotOffset the offset in the reserved slot space * @param v1 1st argument to {@link PipeTransform#transform}. * * @codeGenApi */ export declare function ɵɵpipeBind1(index: number, slotOffset: number, v1: any): any; /** * Invokes a pipe with 2 arguments. * * This instruction acts as a guard to {@link PipeTransform#transform} invoking * the pipe only when an input to the pipe changes. * * @param index Pipe index where the pipe was stored on creation. * @param slotOffset the offset in the reserved slot space * @param v1 1st argument to {@link PipeTransform#transform}. * @param v2 2nd argument to {@link PipeTransform#transform}. * * @codeGenApi */ export declare function ɵɵpipeBind2(index: number, slotOffset: number, v1: any, v2: any): any; /** * Invokes a pipe with 3 arguments. * * This instruction acts as a guard to {@link PipeTransform#transform} invoking * the pipe only when an input to the pipe changes. * * @param index Pipe index where the pipe was stored on creation. * @param slotOffset the offset in the reserved slot space * @param v1 1st argument to {@link PipeTransform#transform}. * @param v2 2nd argument to {@link PipeTransform#transform}. * @param v3 4rd argument to {@link PipeTransform#transform}. * * @codeGenApi */ export declare function ɵɵpipeBind3(index: number, slotOffset: number, v1: any, v2: any, v3: any): any; /** * Invokes a pipe with 4 arguments. * * This instruction acts as a guard to {@link PipeTransform#transform} invoking * the pipe only when an input to the pipe changes. * * @param index Pipe index where the pipe was stored on creation. * @param slotOffset the offset in the reserved slot space * @param v1 1st argument to {@link PipeTransform#transform}. * @param v2 2nd argument to {@link PipeTransform#transform}. * @param v3 3rd argument to {@link PipeTransform#transform}. * @param v4 4th argument to {@link PipeTransform#transform}. * * @codeGenApi */ export declare function ɵɵpipeBind4(index: number, slotOffset: number, v1: any, v2: any, v3: any, v4: any): any; /** * Invokes a pipe with variable number of arguments. * * This instruction acts as a guard to {@link PipeTransform#transform} invoking * the pipe only when an input to the pipe changes. * * @param index Pipe index where the pipe was stored on creation. * @param slotOffset the offset in the reserved slot space * @param values Array of arguments to pass to {@link PipeTransform#transform} method. * * @codeGenApi */ export declare function ɵɵpipeBindV(index: number, slotOffset: number, values: [any, ...any[]]): any; /** * @codeGenApi */ export declare type ɵɵPipeDefWithMeta<T, Name extends string> = ɵPipeDef<T>; /** * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call * to the projectionDef instruction. * * @param nodeIndex * @param selectorIndex: * - 0 when the selector is `*` (or unspecified as this is the default value), * - 1 based index of the selector from the {@link projectionDef} * * @codeGenApi */ export declare function ɵɵprojection(nodeIndex: number, selectorIndex?: number, attrs?: TAttributes): void; /** * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template. * It takes all the selectors from the entire component's template and decides where * each projected node belongs (it re-distributes nodes among "buckets" where each "bucket" is * backed by a selector). * * This function requires CSS selectors to be provided in 2 forms: parsed (by a compiler) and text, * un-parsed form. * * The parsed form is needed for efficient matching of a node against a given CSS selector. * The un-parsed, textual form is needed for support of the ngProjectAs attribute. * * Having a CSS selector in 2 different formats is not ideal, but alternatives have even more * drawbacks: * - having only a textual form would require runtime parsing of CSS selectors; * - we can't have only a parsed as we can't re-construct textual form from it (as entered by a * template author). * * @param projectionSlots? A collection of projection slots. A projection slot can be based * on a parsed CSS selectors or set to the wildcard selector ("*") in order to match * all nodes which do not match any selector. If not specified, a single wildcard * selector projection slot will be defined. * * @codeGenApi */ export declare function ɵɵprojectionDef(projectionSlots?: ProjectionSlots): void; /** * Update a property on a selected element. * * Operates on the element selected by index via the {@link select} instruction. * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled * * @param propName Name of property. Because it is going to DOM, this is not subject to * renaming as part of minification. * @param value New value to write. * @param sanitizer An optional function used to sanitize the value. * @returns This function returns itself so that it may be chained * (e.g. `property('name', ctx.name)('title', ctx.title)`) * * @codeGenApi */ export declare function ɵɵproperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵproperty; /** * * Update an interpolated property on an element with a lone bound value * * Used when the value passed to a property has 1 interpolated value in it, an no additional text * surrounds that interpolated value: * * ```html * <div title="{{v0}}"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate('title', v0); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate(propName: string, v0: any, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate; /** * * Update an interpolated property on an element with single bound value surrounded by text. * * Used when the value passed to a property has 1 interpolated value in it: * * ```html * <div title="prefix{{v0}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate1('title', 'prefix', v0, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate1(propName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate1; /** * * Update an interpolated property on an element with 2 bound values surrounded by text. * * Used when the value passed to a property has 2 interpolated values in it: * * ```html * <div title="prefix{{v0}}-{{v1}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate2('title', 'prefix', v0, '-', v1, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate2(propName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate2; /** * * Update an interpolated property on an element with 3 bound values surrounded by text. * * Used when the value passed to a property has 3 interpolated values in it: * * ```html * <div title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate3( * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate3(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate3; /** * * Update an interpolated property on an element with 4 bound values surrounded by text. * * Used when the value passed to a property has 4 interpolated values in it: * * ```html * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate4( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate4(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate4; /** * * Update an interpolated property on an element with 5 bound values surrounded by text. * * Used when the value passed to a property has 5 interpolated values in it: * * ```html * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate5( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate5(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate5; /** * * Update an interpolated property on an element with 6 bound values surrounded by text. * * Used when the value passed to a property has 6 interpolated values in it: * * ```html * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate6( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate6(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate6; /** * * Update an interpolated property on an element with 7 bound values surrounded by text. * * Used when the value passed to a property has 7 interpolated values in it: * * ```html * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate7( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate7(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate7; /** * * Update an interpolated property on an element with 8 bound values surrounded by text. * * Used when the value passed to a property has 8 interpolated values in it: * * ```html * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolate8( * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix'); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param i6 Static value used for concatenation only. * @param v7 Value checked for change. * @param suffix Static value used for concatenation only. * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolate8(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate8; /** * Update an interpolated property on an element with 8 or more bound values surrounded by text. * * Used when the number of interpolated values exceeds 7. * * ```html * <div * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div> * ``` * * Its compiled representation is:: * * ```ts * ɵɵpropertyInterpolateV( * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9, * 'suffix']); * ``` * * If the property name also exists as an input property on one of the element's directives, * the component property will be set instead of the element property. This check must * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled. * * @param propName The name of the property to update. * @param values The a collection of values and the strings inbetween those values, beginning with a * string prefix and ending with a string suffix. * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`) * @param sanitizer An optional sanitizer function * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵpropertyInterpolateV(propName: string, values: any[], sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolateV; /** * This feature resolves the providers of a directive (or component), * and publish them into the DI system, making it visible to others for injection. * * For example: * ```ts * class ComponentWithProviders { * constructor(private greeter: GreeterDE) {} * * static ɵcmp = defineComponent({ * type: ComponentWithProviders, * selectors: [['component-with-providers']], * factory: () => new ComponentWithProviders(directiveInject(GreeterDE as any)), * decls: 1, * vars: 1, * template: function(fs: RenderFlags, ctx: ComponentWithProviders) { * if (fs & RenderFlags.Create) { * ɵɵtext(0); * } * if (fs & RenderFlags.Update) { * ɵɵtextInterpolate(ctx.greeter.greet()); * } * }, * features: [ProvidersFeature([GreeterDE])] * }); * } * ``` * * @param definition * * @codeGenApi */ export declare function ɵɵProvidersFeature<T>(providers: Provider[], viewProviders?: Provider[]): (definition: ɵDirectiveDef<T>) => void; /** * Bindings for pure functions are stored after regular bindings. * * |-------decls------|---------vars---------| |----- hostVars (dir1) ------| * ------------------------------------------------------------------------------------------ * | nodes/refs/pipes | bindings | fn slots | injector | dir1 | host bindings | host slots | * ------------------------------------------------------------------------------------------ * ^ ^ * TView.bindingStartIndex TView.expandoStartIndex * * Pure function instructions are given an offset from the binding root. Adding the offset to the * binding root gives the first index where the bindings are stored. In component views, the binding * root is the bindingStartIndex. In host bindings, the binding root is the expandoStartIndex + * any directive instances + any hostVars in directives evaluated before it. * * See VIEW_DATA.md for more information about host binding resolution. */ /** * If the value hasn't been saved, calls the pure function to store and return the * value. If it has been saved, returns the saved value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn Function that returns a value * @param thisArg Optional calling context of pureFn * @returns value * * @codeGenApi */ export declare function ɵɵpureFunction0<T>(slotOffset: number, pureFn: () => T, thisArg?: any): T; /** * If the value of the provided exp has changed, calls the pure function to return * an updated value. Or if the value has not changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn Function that returns an updated value * @param exp Updated expression value * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction1(slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction2(slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction3(slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param exp4 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction4(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param exp4 * @param exp5 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction5(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param exp4 * @param exp5 * @param exp6 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction6(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param exp4 * @param exp5 * @param exp6 * @param exp7 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction7(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any, v7: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, exp7: any, thisArg?: any): any; /** * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn * @param exp1 * @param exp2 * @param exp3 * @param exp4 * @param exp5 * @param exp6 * @param exp7 * @param exp8 * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunction8(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any, v7: any, v8: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, exp7: any, exp8: any, thisArg?: any): any; /** * pureFunction instruction that can support any number of bindings. * * If the value of any provided exp has changed, calls the pure function to return * an updated value. Or if no values have changed, returns cached value. * * @param slotOffset the offset from binding root to the reserved slot * @param pureFn A pure function that takes binding values and builds an object or array * containing those values. * @param exps An array of binding values * @param thisArg Optional calling context of pureFn * @returns Updated or cached value * * @codeGenApi */ export declare function ɵɵpureFunctionV(slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any; /** * Refreshes a query by combining matches from all active views and removing matches from deleted * views. * * @returns `true` if a query got dirty during change detection or if this is a static query * resolving in creation mode, `false` otherwise. * * @codeGenApi */ export declare function ɵɵqueryRefresh(queryList: QueryList<any>): boolean; /** * Retrieves a local reference from the current contextViewData. * * If the reference to retrieve is in a parent view, this instruction is used in conjunction * with a nextContext() call, which walks up the tree and updates the contextViewData instance. * * @param index The index of the local ref in contextViewData. * * @codeGenApi */ export declare function ɵɵreference<T>(index: number): T; /** * * @codeGenApi */ export declare function ɵɵresolveBody(element: RElement & { ownerDocument: Document; }): { name: string; target: HTMLElement; }; /** * * @codeGenApi */ export declare function ɵɵresolveDocument(element: RElement & { ownerDocument: Document; }): { name: string; target: Document; }; /** * * @codeGenApi */ export declare function ɵɵresolveWindow(element: RElement & { ownerDocument: Document; }): { name: string; target: Window | null; }; /** * Restores `contextViewData` to the given OpaqueViewState instance. * * Used in conjunction with the getCurrentView() instruction to save a snapshot * of the current view and restore it when listeners are invoked. This allows * walking the declaration view tree in listeners to get vars from parent views. * * @param viewToRestore The OpaqueViewState instance to restore. * * @codeGenApi */ export declare function ɵɵrestoreView(viewToRestore: OpaqueViewState): void; /** * An `html` sanitizer which converts untrusted `html` **string** into trusted string by removing * dangerous content. * * This method parses the `html` and locates potentially dangerous content (such as urls and * javascript) and removes it. * * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustHtml}. * * @param unsafeHtml untrusted `html`, typically from the user. * @returns `html` string which is safe to display to user, because all of the dangerous javascript * and urls have been removed. * * @publicApi */ export declare function ɵɵsanitizeHtml(unsafeHtml: any): string; /** * A `url` sanitizer which only lets trusted `url`s through. * * This passes only `url`s marked trusted by calling {@link bypassSanitizationTrustResourceUrl}. * * @param unsafeResourceUrl untrusted `url`, typically from the user. * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because * only trusted `url`s have been allowed to pass. * * @publicApi */ export declare function ɵɵsanitizeResourceUrl(unsafeResourceUrl: any): string; /** * A `script` sanitizer which only lets trusted javascript through. * * This passes only `script`s marked trusted by calling {@link * bypassSanitizationTrustScript}. * * @param unsafeScript untrusted `script`, typically from the user. * @returns `url` string which is safe to bind to the `<script>` element such as `<img src>`, * because only trusted `scripts` have been allowed to pass. * * @publicApi */ export declare function ɵɵsanitizeScript(unsafeScript: any): string; /** * A `style` sanitizer which converts untrusted `style` **string** into trusted string by removing * dangerous content. * * This method parses the `style` and locates potentially dangerous content (such as urls and * javascript) and removes it. * * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustStyle}. * * @param unsafeStyle untrusted `style`, typically from the user. * @returns `style` string which is safe to bind to the `style` properties, because all of the * dangerous javascript and urls have been removed. * * @publicApi */ export declare function ɵɵsanitizeStyle(unsafeStyle: any): string; /** * A `url` sanitizer which converts untrusted `url` **string** into trusted string by removing * dangerous * content. * * This method parses the `url` and locates potentially dangerous content (such as javascript) and * removes it. * * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustUrl}. * * @param unsafeUrl untrusted `url`, typically from the user. * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because * all of the dangerous javascript has been removed. * * @publicApi */ export declare function ɵɵsanitizeUrl(unsafeUrl: any): string; /** * Sanitizes URL, selecting sanitizer function based on tag and property names. * * This function is used in case we can't define security context at compile time, when only prop * name is available. This happens when we generate host bindings for Directives/Components. The * host element is unknown at compile time, so we defer calculation of specific sanitizer to * runtime. * * @param unsafeUrl untrusted `url`, typically from the user. * @param tag target element tag name. * @param prop name of the property that contains the value. * @returns `url` string which is safe to bind. * * @publicApi */ export declare function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl: any, tag: string, prop: string): any; /** * Selects an element for later binding instructions. * @deprecated No longer being generated, but still used in unit tests. * @codeGenApi */ export declare function ɵɵselect(index: number): void; /** * @codeGenApi */ export declare function ɵɵsetComponentScope(type: ɵComponentType<any>, directives: Type<any>[], pipes: Type<any>[]): void; /** * Adds the module metadata that is necessary to compute the module's transitive scope to an * existing module definition. * * Scope metadata of modules is not used in production builds, so calls to this function can be * marked pure to tree-shake it from the bundle, allowing for all referenced declarations * to become eligible for tree-shaking as well. * * @codeGenApi */ export declare function ɵɵsetNgModuleScope(type: any, scope: { /** List of components, directives, and pipes declared by this module. */ declarations?: Type<any>[] | (() => Type<any>[]); /** List of modules or `ModuleWithProviders` imported by this module. */ imports?: Type<any>[] | (() => Type<any>[]); /** * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this * module. */ exports?: Type<any>[] | (() => Type<any>[]); }): void; /** * Registers a QueryList, associated with a static content query, for later refresh * (part of a view refresh). * * @param directiveIndex Current directive index * @param predicate The type for which the query will search * @param descend Whether or not to descend into children * @param read What to save in the query * @returns QueryList<T> * * @codeGenApi */ export declare function ɵɵstaticContentQuery<T>(directiveIndex: number, predicate: Type<any> | string[], descend: boolean, read?: any): void; /** * Creates new QueryList for a static view query. * * @param predicate The type for which the query will search * @param descend Whether or not to descend into children * @param read What to save in the query * * @codeGenApi */ export declare function ɵɵstaticViewQuery<T>(predicate: Type<any> | string[], descend: boolean, read?: any): void; /** * Update style bindings using an object literal on an element. * * This instruction is meant to apply styling via the `[style]="exp"` template bindings. * When styles are applied to the element they will then be updated with respect to * any styles/classes set via `styleProp`. If any styles are set to falsy * then they will be removed from the element. * * Note that the styling instruction will not be applied until `stylingApply` is called. * * @param styles A key/value style map of the styles that will be applied to the given element. * Any missing styles (that have already been applied to the element beforehand) will be * removed (unset) from the element's styling. * * Note that this will apply the provided styleMap value to the host element if this function * is called within a host binding. * * @codeGenApi */ export declare function ɵɵstyleMap(styles: { [styleName: string]: any; } | string | undefined | null): void; /** * Update a style binding on an element with the provided value. * * If the style value is falsy then it will be removed from the element * (or assigned a different value depending if there are any styles placed * on the element with `styleMap` or any static styles that are * present from when the element was created with `styling`). * * Note that the styling element is updated as part of `stylingApply`. * * @param prop A valid CSS property. * @param value New value to write (`null` or an empty string to remove). * @param suffix Optional suffix. Used with scalar values to add unit such as `px`. * Note that when a suffix is provided then the underlying sanitizer will * be ignored. * * Note that this will apply the provided style value to the host element if this function is called * within a host binding function. * * @codeGenApi */ export declare function ɵɵstyleProp(prop: string, value: string | number | ɵSafeValue | undefined | null, suffix?: string | null): typeof ɵɵstyleProp; /** * * Update an interpolated style property on an element with single bound value surrounded by text. * * Used when the value passed to a property has 1 interpolated value in it: * * ```html * <div style.color="prefix{{v0}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate1(0, 'prefix', v0, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate1(prop: string, prefix: string, v0: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate1; /** * * Update an interpolated style property on an element with 2 bound values surrounded by text. * * Used when the value passed to a property has 2 interpolated values in it: * * ```html * <div style.color="prefix{{v0}}-{{v1}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate2(0, 'prefix', v0, '-', v1, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate2(prop: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate2; /** * * Update an interpolated style property on an element with 3 bound values surrounded by text. * * Used when the value passed to a property has 3 interpolated values in it: * * ```html * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate3(0, 'prefix', v0, '-', v1, '-', v2, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate3(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate3; /** * * Update an interpolated style property on an element with 4 bound values surrounded by text. * * Used when the value passed to a property has 4 interpolated values in it: * * ```html * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate4(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate4(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate4; /** * * Update an interpolated style property on an element with 5 bound values surrounded by text. * * Used when the value passed to a property has 5 interpolated values in it: * * ```html * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate5(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate5(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate5; /** * * Update an interpolated style property on an element with 6 bound values surrounded by text. * * Used when the value passed to a property has 6 interpolated values in it: * * ```html * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate6(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate6(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate6; /** * * Update an interpolated style property on an element with 7 bound values surrounded by text. * * Used when the value passed to a property has 7 interpolated values in it: * * ```html * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate7( * 0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate7(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate7; /** * * Update an interpolated style property on an element with 8 bound values surrounded by text. * * Used when the value passed to a property has 8 interpolated values in it: * * ```html * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolate8(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, * '-', v7, 'suffix'); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`. * @param prefix Static value used for concatenation only. * @param v0 Value checked for change. * @param i0 Static value used for concatenation only. * @param v1 Value checked for change. * @param i1 Static value used for concatenation only. * @param v2 Value checked for change. * @param i2 Static value used for concatenation only. * @param v3 Value checked for change. * @param i3 Static value used for concatenation only. * @param v4 Value checked for change. * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. * @param i5 Static value used for concatenation only. * @param v6 Value checked for change. * @param i6 Static value used for concatenation only. * @param v7 Value checked for change. * @param suffix Static value used for concatenation only. * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolate8(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate8; /** * Update an interpolated style property on an element with 8 or more bound values surrounded by * text. * * Used when the number of interpolated values exceeds 7. * * ```html * <div * style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"> * </div> * ``` * * Its compiled representation is: * * ```ts * ɵɵstylePropInterpolateV( * 0, ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9, * 'suffix']); * ``` * * @param styleIndex Index of style to update. This index value refers to the * index of the style in the style bindings array that was passed into * `styling`.. * @param values The a collection of values and the strings in-between those values, beginning with * a string prefix and ending with a string suffix. * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`) * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`. * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵstylePropInterpolateV(prop: string, values: any[], valueSuffix?: string | null): typeof ɵɵstylePropInterpolateV; /** * Sets the current style sanitizer function which will then be used * within all follow-up prop and map-based style binding instructions * for the given element. * * Note that once styling has been applied to the element (i.e. once * `advance(n)` is executed or the hostBindings/template function exits) * then the active `sanitizerFn` will be set to `null`. This means that * once styling is applied to another element then a another call to * `styleSanitizer` will need to be made. * * @param sanitizerFn The sanitization function that will be used to * process style prop/value entries. * * @codeGenApi */ export declare function ɵɵstyleSanitizer(sanitizer: StyleSanitizeFn | null): void; /** * Creates an LContainer for an ng-template (dynamically-inserted view), e.g. * * <ng-template #foo> * <div></div> * </ng-template> * * @param index The index of the container in the data array * @param templateFn Inline template * @param decls The number of nodes, local refs, and pipes for this template * @param vars The number of bindings for this template * @param tagName The name of the container element, if applicable * @param attrsIndex Index of template attributes in the `consts` array. * @param localRefs Index of the local references in the `consts` array. * @param localRefExtractor A function which extracts local-refs values from the template. * Defaults to the current element associated with the local-ref. * * @codeGenApi */ export declare function ɵɵtemplate(index: number, templateFn: ComponentTemplate<any> | null, decls: number, vars: number, tagName?: string | null, attrsIndex?: number | null, localRefsIndex?: number | null, localRefExtractor?: LocalRefExtractor): void; /** * Retrieves `TemplateRef` instance from `Injector` when a local reference is placed on the * `<ng-template>` element. * * @codeGenApi */ export declare function ɵɵtemplateRefExtractor(tNode: TNode, currentView: ɵangular_packages_core_core_bo): TemplateRef<unknown> | null; /** * Create static text node * * @param index Index of the node in the data array * @param value Static string value to write. * * @codeGenApi */ export declare function ɵɵtext(index: number, value?: string): void; /** * * Update text content with a lone bound value * * Used when a text node has 1 interpolated value in it, an no additional text * surrounds that interpolated value: * * ```html * <div>{{v0}}</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate(v0); * ``` * @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate(v0: any): typeof ɵɵtextInterpolate; /** * * Update text content with single bound value surrounded by other text. * * Used when a text node has 1 interpolated value in it: * * ```html * <div>prefix{{v0}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate1('prefix', v0, 'suffix'); * ``` * @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate1(prefix: string, v0: any, suffix: string): typeof ɵɵtextInterpolate1; /** * * Update text content with 2 bound values surrounded by other text. * * Used when a text node has 2 interpolated values in it: * * ```html * <div>prefix{{v0}}-{{v1}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate2('prefix', v0, '-', v1, 'suffix'); * ``` * @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): typeof ɵɵtextInterpolate2; /** * * Update text content with 3 bound values surrounded by other text. * * Used when a text node has 3 interpolated values in it: * * ```html * <div>prefix{{v0}}-{{v1}}-{{v2}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate3( * 'prefix', v0, '-', v1, '-', v2, 'suffix'); * ``` * @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): typeof ɵɵtextInterpolate3; /** * * Update text content with 4 bound values surrounded by other text. * * Used when a text node has 4 interpolated values in it: * * ```html * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate4( * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix'); * ``` * @returns itself, so that it may be chained. * @see ɵɵtextInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): typeof ɵɵtextInterpolate4; /** * * Update text content with 5 bound values surrounded by other text. * * Used when a text node has 5 interpolated values in it: * * ```html * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate5( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix'); * ``` * @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): typeof ɵɵtextInterpolate5; /** * * Update text content with 6 bound values surrounded by other text. * * Used when a text node has 6 interpolated values in it: * * ```html * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate6( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix'); * ``` * * @param i4 Static value used for concatenation only. * @param v5 Value checked for change. @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): typeof ɵɵtextInterpolate6; /** * * Update text content with 7 bound values surrounded by other text. * * Used when a text node has 7 interpolated values in it: * * ```html * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate7( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix'); * ``` * @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): typeof ɵɵtextInterpolate7; /** * * Update text content with 8 bound values surrounded by other text. * * Used when a text node has 8 interpolated values in it: * * ```html * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolate8( * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix'); * ``` * @returns itself, so that it may be chained. * @see textInterpolateV * @codeGenApi */ export declare function ɵɵtextInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): typeof ɵɵtextInterpolate8; /** * Update text content with 9 or more bound values other surrounded by text. * * Used when the number of interpolated values exceeds 8. * * ```html * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix</div> * ``` * * Its compiled representation is: * * ```ts * ɵɵtextInterpolateV( * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9, * 'suffix']); * ``` *. * @param values The a collection of values and the strings in between those values, beginning with * a string prefix and ending with a string suffix. * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`) * * @returns itself, so that it may be chained. * @codeGenApi */ export declare function ɵɵtextInterpolateV(values: any[]): typeof ɵɵtextInterpolateV; /** * Updates a synthetic host binding (e.g. `[@foo]`) on a component. * * This instruction is for compatibility purposes and is designed to ensure that a * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in * the component's renderer. Normally all host bindings are evaluated with the parent * component's renderer, but, in the case of animation @triggers, they need to be * evaluated with the sub component's renderer (because that's where the animation * triggers are defined). * * Do not use this instruction as a replacement for `elementProperty`. This instruction * only exists to ensure compatibility with the ViewEngine's host binding behavior. * * @param index The index of the element to update in the data array * @param propName Name of property. Because it is going to DOM, this is not subject to * renaming as part of minification. * @param value New value to write. * @param sanitizer An optional function used to sanitize the value. * * @codeGenApi */ export declare function ɵɵupdateSyntheticHostBinding<T>(propName: string, value: T | ɵNO_CHANGE, sanitizer?: SanitizerFn | null): typeof ɵɵupdateSyntheticHostBinding; /** * Creates new QueryList, stores the reference in LView and returns QueryList. * * @param predicate The type for which the query will search * @param descend Whether or not to descend into children * @param read What to save in the query * * @codeGenApi */ export declare function ɵɵviewQuery<T>(predicate: Type<any> | string[], descend: boolean, read?: any): void; export { } //# sourceMappingURL=core.d.ts.map