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 20:07:17 +00:00
|
|
|
/**
|
|
|
|
|
* @license
|
2020-05-19 19:08:49 +00:00
|
|
|
* Copyright Google LLC All Rights Reserved.
|
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 20:07:17 +00:00
|
|
|
*
|
|
|
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
|
|
|
* found in the LICENSE file at https://angular.io/license
|
|
|
|
|
*/
|
|
|
|
|
|
2020-04-07 19:43:43 +00:00
|
|
|
import {ApplicationRef, forwardRef, NgModule} from '@angular/core';
|
2016-07-18 10:50:31 +00:00
|
|
|
import {FormsModule} from '@angular/forms';
|
2017-03-14 00:31:03 +00:00
|
|
|
import {ServerModule} from '@angular/platform-server';
|
2017-03-20 23:31:11 +00:00
|
|
|
import {FlatModule} from 'flat_module';
|
2016-11-29 23:36:33 +00:00
|
|
|
// Note: don't refer to third_party_src as we want to test that
|
|
|
|
|
// we can compile components from node_modules!
|
|
|
|
|
import {ThirdpartyModule} from 'third_party/module';
|
2016-10-24 20:28:23 +00:00
|
|
|
|
2016-08-19 19:51:01 +00:00
|
|
|
import {MultipleComponentsMyComp, NextComp} from './a/multiple_components';
|
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 20:07:17 +00:00
|
|
|
import {AnimateCmp} from './animate';
|
|
|
|
|
import {BasicComp} from './basic';
|
2016-10-24 20:28:23 +00:00
|
|
|
import {ComponentUsingThirdParty} from './comp_using_3rdp';
|
2017-03-20 23:31:11 +00:00
|
|
|
import {ComponentUsingFlatModule} from './comp_using_flat_module';
|
2017-03-15 20:39:00 +00:00
|
|
|
import {CUSTOM} from './custom_token';
|
2016-07-25 07:36:30 +00:00
|
|
|
import {CompWithAnalyzeEntryComponentsProvider, CompWithEntryComponents} from './entry_components';
|
2017-03-15 22:50:30 +00:00
|
|
|
import {BindingErrorComp} from './errors';
|
2016-09-06 14:49:38 +00:00
|
|
|
import {CompConsumingEvents, CompUsingPipes, CompWithProviders, CompWithReferences, DirPublishingEvents, ModuleUsingCustomElements} from './features';
|
2016-11-29 20:02:50 +00:00
|
|
|
import {CompUsingRootModuleDirectiveAndPipe, SomeDirectiveInRootModule, SomeLibModule, SomePipeInRootModule, SomeService} from './module_fixtures';
|
2016-08-19 19:51:01 +00:00
|
|
|
import {CompWithNgContent, ProjectingComp} from './projection';
|
|
|
|
|
import {CompForChildQuery, CompWithChildQuery, CompWithDirectiveChild, DirectiveForQuery} from './queries';
|
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 20:07:17 +00:00
|
|
|
|
2017-04-26 16:24:42 +00:00
|
|
|
// Adding an export here so that TypeScript compiles the file as well
|
|
|
|
|
export {SomeModule as JitSummariesSomeModule} from './jit_summaries';
|
|
|
|
|
|
2016-07-18 10:50:31 +00:00
|
|
|
@NgModule({
|
|
|
|
|
declarations: [
|
2016-09-06 14:49:38 +00:00
|
|
|
AnimateCmp,
|
|
|
|
|
BasicComp,
|
2016-10-24 20:28:23 +00:00
|
|
|
CompConsumingEvents,
|
2016-09-06 14:49:38 +00:00
|
|
|
CompForChildQuery,
|
2016-10-24 20:28:23 +00:00
|
|
|
CompUsingPipes,
|
|
|
|
|
CompUsingRootModuleDirectiveAndPipe,
|
2016-09-06 14:49:38 +00:00
|
|
|
CompWithAnalyzeEntryComponentsProvider,
|
|
|
|
|
CompWithChildQuery,
|
|
|
|
|
CompWithDirectiveChild,
|
2016-10-24 20:28:23 +00:00
|
|
|
CompWithEntryComponents,
|
2016-09-06 14:49:38 +00:00
|
|
|
CompWithNgContent,
|
|
|
|
|
CompWithProviders,
|
|
|
|
|
CompWithReferences,
|
2016-10-24 20:28:23 +00:00
|
|
|
DirectiveForQuery,
|
2016-09-06 14:49:38 +00:00
|
|
|
DirPublishingEvents,
|
|
|
|
|
MultipleComponentsMyComp,
|
|
|
|
|
NextComp,
|
2016-10-24 20:28:23 +00:00
|
|
|
ProjectingComp,
|
|
|
|
|
SomeDirectiveInRootModule,
|
|
|
|
|
SomePipeInRootModule,
|
2017-03-20 23:31:11 +00:00
|
|
|
ComponentUsingFlatModule,
|
2016-10-24 20:28:23 +00:00
|
|
|
ComponentUsingThirdParty,
|
2017-03-15 22:50:30 +00:00
|
|
|
BindingErrorComp,
|
2016-07-18 10:50:31 +00:00
|
|
|
],
|
2016-08-18 17:11:06 +00:00
|
|
|
imports: [
|
2016-11-03 18:16:28 +00:00
|
|
|
ServerModule,
|
2016-10-24 20:28:23 +00:00
|
|
|
FormsModule,
|
|
|
|
|
ModuleUsingCustomElements,
|
2016-11-29 20:02:50 +00:00
|
|
|
SomeLibModule.withProviders(),
|
2016-10-24 20:28:23 +00:00
|
|
|
ThirdpartyModule,
|
2017-03-20 23:31:11 +00:00
|
|
|
FlatModule,
|
2016-08-18 17:11:06 +00:00
|
|
|
],
|
2017-03-07 01:15:08 +00:00
|
|
|
providers: [
|
|
|
|
|
SomeService,
|
2017-09-24 19:11:36 +00:00
|
|
|
{provide: CUSTOM, useValue: forwardRef(() => ({name: 'some name'}))},
|
2017-03-07 01:15:08 +00:00
|
|
|
],
|
2016-07-25 07:36:30 +00:00
|
|
|
entryComponents: [
|
2016-10-24 20:28:23 +00:00
|
|
|
AnimateCmp,
|
|
|
|
|
BasicComp,
|
|
|
|
|
CompUsingRootModuleDirectiveAndPipe,
|
|
|
|
|
CompWithAnalyzeEntryComponentsProvider,
|
|
|
|
|
CompWithChildQuery,
|
|
|
|
|
CompWithEntryComponents,
|
|
|
|
|
CompWithReferences,
|
|
|
|
|
ProjectingComp,
|
|
|
|
|
ComponentUsingThirdParty,
|
2017-03-20 23:31:11 +00:00
|
|
|
ComponentUsingFlatModule,
|
2017-03-15 22:50:30 +00:00
|
|
|
BindingErrorComp,
|
2016-07-07 17:05:55 +00:00
|
|
|
]
|
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 20:07:17 +00:00
|
|
|
})
|
|
|
|
|
export class MainModule {
|
|
|
|
|
constructor(public appRef: ApplicationRef) {}
|
2016-08-02 13:54:08 +00:00
|
|
|
|
|
|
|
|
ngDoBootstrap() {}
|
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 20:07:17 +00:00
|
|
|
}
|