v4.1.408-53

Use case

Dynamic compile components by a string template for Angular. You can provide a context, that you can use with anything (for clicking for free etc..)

The old angular-compile-html.

NPM & Version

It is a CommonJS bundle. The version reflects the Angular version (AngularMajor.AngularMinor.Build-Commit).

Install

npm install --save p3x-angular-compile
# or
yarn add p3x-angular-compile

AOT + JIT

It is not working out of the box (the default is either JIT or AOT, not both), but the apps become 10 folds faster. The @ngtools/webpack is AOT and the awesome-typescript-loader is JIT only.

The solution can be architect with the @angular/compiler and the awesome-typescript-loader together. A miracle!

Example here: More info about AOT + JIT

Size

If you want very small bundle, use gzip.

Usage

// the module settings
@NgModule({
    imports: [
        CompileModule.forRoot({
            module: {
                schemas: [CUSTOM_ELEMENTS_SCHEMA],
                declarations: [MyDynamicElement ]
            }
        })
    ],
    declarations: [
        Page,
    ],
    providers: [
    ],
    bootstrap: [ Page ]
})
export class Module { };
 <div *ngIf="true" [p3x-compile]="data" [p3x-compile-ctx]="this"></div>
// a page example
export class Page {

    data: string = "<div (click)="context.alert()">It is working</div>";

    alert() {
        alert('ok');
    }
}

Actual used dynamic compiler

I use a dynamic Markdown page with p3x-angular-compile: Module , Example page

Service

Please refer to use an a service

Options

Reference for the Angular module settings.

The templates are cached.

export interface CompileOptions {   
    // cached by template
    template: string;
    container: ViewContainerRef;
    context?: any,

    // you can customize here any you want to
    // CommonModule, BrowserModule are auto added 
    // (like *ngIf and angular default directives)
    // though CompileModule.forRoot is usually enough
    // so you do not need to use it
    module?: NgModule;

    onCompiled?: Function,
    onError?: Function;

}

Deployed example

Corifeus Pages (JIT + AOT at once)

https://github.com/patrikx3/corifeus-app-web-pages/blob/master/src/angular/modules/cory-page.ts

Dev environment end test

npm install -g yarn
git clone https://github.com/patrikx3/angular-compile.git
cd angular-compile
yarn install
grunt run|default

http://localhost:8080

p3x Wheel
AES secure folder encrypt and decryptAngular Dynamic Compile service and directiveCorifeus - MatrixCorifeus App Server P3X - SpectrumCorifeus App Web Pages - SupportCorifeus Builder - MakeCorifeus Builder Angular - LastCorifeus Server - MotorCorifeus Server Deployer - LastCorifeus Utils - MemoryCoriefus Web - ForestCorifeus Web Material - AmazingLinux OnenotePersistent RAM diskSystemD Manager, watchdog, notifier and serviceTools