feat(browser): use AppModules for bootstrap in the browser
This introduces the `BrowserModule` to be used for long form
bootstrap and offline compile bootstrap:
```
@AppModule({
modules: [BrowserModule],
precompile: [MainComponent],
providers: […], // additional providers
directives: […], // additional platform directives
pipes: […] // additional platform pipes
})
class MyModule {
constructor(appRef: ApplicationRef) {
appRef.bootstrap(MainComponent);
}
}
// offline compile
import {bootstrapModuleFactory} from ‘@angular/platform-browser’;
bootstrapModuleFactory(MyModuleNgFactory);
// runtime compile long form
import {bootstrapModule} from ‘@angular/platform-browser-dynamic’;
bootstrapModule(MyModule);
```
The short form, `bootstrap(...)`, can now creates a module on the fly,
given `directives`, `pipes, `providers`, `precompile` and `modules`
properties.
Related changes:
- make `SanitizationService`, `SecurityContext` public in `@angular/core` so that the offline compiler can resolve the token
- move `AnimationDriver` to `platform-browser` and make it
public so that the offline compiler can resolve the token
BREAKING CHANGES:
- short form bootstrap does no longer allow
to inject compiler internals (i.e. everything
from `@angular/compiler). Inject `Compiler` instead.
To provide custom providers for the compiler,
create a custom compiler via `browserCompiler({providers: [...]})`
and pass that into the `bootstrap` method.
2016-06-30 16:07:17 -04:00
|
|
|
export declare class BrowserModule {
|
2016-08-18 16:34:28 -04:00
|
|
|
constructor(parentModule: BrowserModule);
|
2017-02-22 19:06:21 -05:00
|
|
|
/** @experimental */ static withServerTransition(params: {
|
|
|
|
appId: string;
|
|
|
|
}): ModuleWithProviders;
|
feat(browser): use AppModules for bootstrap in the browser
This introduces the `BrowserModule` to be used for long form
bootstrap and offline compile bootstrap:
```
@AppModule({
modules: [BrowserModule],
precompile: [MainComponent],
providers: […], // additional providers
directives: […], // additional platform directives
pipes: […] // additional platform pipes
})
class MyModule {
constructor(appRef: ApplicationRef) {
appRef.bootstrap(MainComponent);
}
}
// offline compile
import {bootstrapModuleFactory} from ‘@angular/platform-browser’;
bootstrapModuleFactory(MyModuleNgFactory);
// runtime compile long form
import {bootstrapModule} from ‘@angular/platform-browser-dynamic’;
bootstrapModule(MyModule);
```
The short form, `bootstrap(...)`, can now creates a module on the fly,
given `directives`, `pipes, `providers`, `precompile` and `modules`
properties.
Related changes:
- make `SanitizationService`, `SecurityContext` public in `@angular/core` so that the offline compiler can resolve the token
- move `AnimationDriver` to `platform-browser` and make it
public so that the offline compiler can resolve the token
BREAKING CHANGES:
- short form bootstrap does no longer allow
to inject compiler internals (i.e. everything
from `@angular/compiler). Inject `Compiler` instead.
To provide custom providers for the compiler,
create a custom compiler via `browserCompiler({providers: [...]})`
and pass that into the `bootstrap` method.
2016-06-30 16:07:17 -04:00
|
|
|
}
|
|
|
|
|
2017-09-11 03:18:55 -04:00
|
|
|
/** @experimental */
|
|
|
|
export declare class BrowserTransferStateModule {
|
|
|
|
}
|
|
|
|
|
2016-06-27 15:27:23 -04:00
|
|
|
/** @experimental */
|
2016-06-22 17:56:10 -04:00
|
|
|
export declare class By {
|
|
|
|
static all(): Predicate<DebugElement>;
|
|
|
|
static css(selector: string): Predicate<DebugElement>;
|
2016-08-10 21:21:28 -04:00
|
|
|
static directive(type: Type<any>): Predicate<DebugElement>;
|
2016-06-22 17:56:10 -04:00
|
|
|
}
|
|
|
|
|
2016-06-27 15:27:23 -04:00
|
|
|
/** @experimental */
|
2016-06-22 17:56:10 -04:00
|
|
|
export declare function disableDebugTools(): void;
|
|
|
|
|
2017-03-22 20:13:24 -04:00
|
|
|
/** @deprecated */
|
2017-01-03 19:54:46 -05:00
|
|
|
export declare const DOCUMENT: InjectionToken<Document>;
|
2016-06-22 17:56:10 -04:00
|
|
|
|
2016-08-25 18:41:19 -04:00
|
|
|
export declare abstract class DomSanitizer implements Sanitizer {
|
2016-06-22 17:56:10 -04:00
|
|
|
abstract bypassSecurityTrustHtml(value: string): SafeHtml;
|
2016-06-23 21:19:32 -04:00
|
|
|
abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl;
|
2016-06-22 17:56:10 -04:00
|
|
|
abstract bypassSecurityTrustScript(value: string): SafeScript;
|
2016-06-23 21:19:32 -04:00
|
|
|
abstract bypassSecurityTrustStyle(value: string): SafeStyle;
|
2016-06-22 17:56:10 -04:00
|
|
|
abstract bypassSecurityTrustUrl(value: string): SafeUrl;
|
2017-04-14 17:40:56 -04:00
|
|
|
abstract sanitize(context: SecurityContext, value: SafeValue | string | null): string | null;
|
2016-06-22 17:56:10 -04:00
|
|
|
}
|
|
|
|
|
2016-06-27 15:27:23 -04:00
|
|
|
/** @experimental */
|
2016-06-22 17:56:10 -04:00
|
|
|
export declare function enableDebugTools<T>(ref: ComponentRef<T>): ComponentRef<T>;
|
|
|
|
|
2017-01-03 19:54:46 -05:00
|
|
|
export declare const EVENT_MANAGER_PLUGINS: InjectionToken<EventManagerPlugin[]>;
|
2016-06-22 17:56:10 -04:00
|
|
|
|
|
|
|
export declare class EventManager {
|
|
|
|
constructor(plugins: EventManagerPlugin[], _zone: NgZone);
|
|
|
|
addEventListener(element: HTMLElement, eventName: string, handler: Function): Function;
|
|
|
|
addGlobalEventListener(target: string, eventName: string, handler: Function): Function;
|
|
|
|
getZone(): NgZone;
|
|
|
|
}
|
|
|
|
|
2016-06-27 15:27:23 -04:00
|
|
|
/** @experimental */
|
2017-01-03 19:54:46 -05:00
|
|
|
export declare const HAMMER_GESTURE_CONFIG: InjectionToken<HammerGestureConfig>;
|
2016-06-22 17:56:10 -04:00
|
|
|
|
2018-05-16 13:00:33 -04:00
|
|
|
export declare const HAMMER_LOADER: InjectionToken<HammerLoader>;
|
|
|
|
|
2016-06-27 15:27:23 -04:00
|
|
|
/** @experimental */
|
2016-06-22 17:56:10 -04:00
|
|
|
export declare class HammerGestureConfig {
|
|
|
|
events: string[];
|
2018-02-01 20:08:17 -05:00
|
|
|
options?: {
|
|
|
|
cssProps?: any;
|
|
|
|
domEvents?: boolean;
|
|
|
|
enable?: boolean | ((manager: any) => boolean);
|
|
|
|
preset?: any[];
|
|
|
|
touchAction?: string;
|
|
|
|
recognizers?: any[];
|
|
|
|
inputClass?: any;
|
|
|
|
inputTarget?: EventTarget;
|
|
|
|
};
|
2016-06-22 17:56:10 -04:00
|
|
|
overrides: {
|
|
|
|
[key: string]: Object;
|
|
|
|
};
|
|
|
|
buildHammer(element: HTMLElement): HammerInstance;
|
|
|
|
}
|
|
|
|
|
2018-05-23 13:46:18 -04:00
|
|
|
export declare type HammerLoader = () => Promise<void>;
|
2018-05-16 13:00:33 -04:00
|
|
|
|
2017-09-11 03:18:55 -04:00
|
|
|
/** @experimental */
|
2018-02-25 16:55:30 -05:00
|
|
|
export declare function makeStateKey<T = void>(key: string): StateKey<T>;
|
2017-09-11 03:18:55 -04:00
|
|
|
|
2016-12-08 21:44:28 -05:00
|
|
|
/** @experimental */
|
|
|
|
export declare class Meta {
|
2017-02-14 19:14:40 -05:00
|
|
|
constructor(_doc: any);
|
2017-03-24 12:59:41 -04:00
|
|
|
addTag(tag: MetaDefinition, forceCreation?: boolean): HTMLMetaElement | null;
|
2016-12-08 21:44:28 -05:00
|
|
|
addTags(tags: MetaDefinition[], forceCreation?: boolean): HTMLMetaElement[];
|
2017-03-24 12:59:41 -04:00
|
|
|
getTag(attrSelector: string): HTMLMetaElement | null;
|
2016-12-08 21:44:28 -05:00
|
|
|
getTags(attrSelector: string): HTMLMetaElement[];
|
|
|
|
removeTag(attrSelector: string): void;
|
|
|
|
removeTagElement(meta: HTMLMetaElement): void;
|
2017-03-24 12:59:41 -04:00
|
|
|
updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement | null;
|
2016-12-08 21:44:28 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
/** @experimental */
|
2017-02-08 22:50:16 -05:00
|
|
|
export declare type MetaDefinition = {
|
2016-12-08 21:44:28 -05:00
|
|
|
charset?: string;
|
|
|
|
content?: string;
|
|
|
|
httpEquiv?: string;
|
|
|
|
id?: string;
|
|
|
|
itemprop?: string;
|
|
|
|
name?: string;
|
|
|
|
property?: string;
|
|
|
|
scheme?: string;
|
|
|
|
url?: string;
|
2017-02-08 22:50:16 -05:00
|
|
|
} & {
|
2016-12-08 21:44:28 -05:00
|
|
|
[prop: string]: string;
|
2017-02-08 22:50:16 -05:00
|
|
|
};
|
2016-12-08 21:44:28 -05:00
|
|
|
|
perf: switch angular to use StaticInjector instead of ReflectiveInjector
This change allows ReflectiveInjector to be tree shaken resulting
in not needed Reflect polyfil and smaller bundles.
Code savings for HelloWorld using Closure:
Reflective: bundle.js: 105,864(34,190 gzip)
Static: bundle.js: 154,889(33,555 gzip)
645( 2%)
BREAKING CHANGE:
`platformXXXX()` no longer accepts providers which depend on reflection.
Specifically the method signature when from `Provider[]` to
`StaticProvider[]`.
Example:
Before:
```
[
MyClass,
{provide: ClassA, useClass: SubClassA}
]
```
After:
```
[
{provide: MyClass, deps: [Dep1,...]},
{provide: ClassA, useClass: SubClassA, deps: [Dep1,...]}
]
```
NOTE: This only applies to platform creation and providers for the JIT
compiler. It does not apply to `@Compotent` or `@NgModule` provides
declarations.
Benchpress note: Previously Benchpress also supported reflective
provides, which now require static providers.
DEPRECATION:
- `ReflectiveInjector` is now deprecated as it will be remove. Use
`Injector.create` as a replacement.
closes #18496
2017-08-03 15:33:29 -04:00
|
|
|
export declare const platformBrowser: (extraProviders?: StaticProvider[]) => PlatformRef;
|
2016-07-25 08:47:16 -04:00
|
|
|
|
2016-06-22 17:56:10 -04:00
|
|
|
export interface SafeHtml extends SafeValue {
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface SafeResourceUrl extends SafeValue {
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface SafeScript extends SafeValue {
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface SafeStyle extends SafeValue {
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface SafeUrl extends SafeValue {
|
|
|
|
}
|
|
|
|
|
2017-04-14 17:40:56 -04:00
|
|
|
export interface SafeValue {
|
|
|
|
}
|
|
|
|
|
2017-09-11 03:18:55 -04:00
|
|
|
/** @experimental */
|
|
|
|
export declare type StateKey<T> = string & {
|
|
|
|
__not_a_string: never;
|
|
|
|
};
|
|
|
|
|
2016-06-27 13:02:02 -04:00
|
|
|
/** @experimental */
|
2016-06-22 17:56:10 -04:00
|
|
|
export declare class Title {
|
2017-02-14 19:14:40 -05:00
|
|
|
constructor(_doc: any);
|
2016-06-22 17:56:10 -04:00
|
|
|
getTitle(): string;
|
|
|
|
setTitle(newTitle: string): void;
|
|
|
|
}
|
2016-11-30 16:52:08 -05:00
|
|
|
|
2017-09-11 03:18:55 -04:00
|
|
|
/** @experimental */
|
|
|
|
export declare class TransferState {
|
|
|
|
get<T>(key: StateKey<T>, defaultValue: T): T;
|
|
|
|
hasKey<T>(key: StateKey<T>): boolean;
|
|
|
|
onSerialize<T>(key: StateKey<T>, callback: () => T): void;
|
|
|
|
remove<T>(key: StateKey<T>): void;
|
|
|
|
set<T>(key: StateKey<T>, value: T): void;
|
|
|
|
toJson(): string;
|
|
|
|
}
|
|
|
|
|
2016-11-30 16:52:08 -05:00
|
|
|
export declare const VERSION: Version;
|