Uptime ratio (90 days)      
v2026.4.102
 89

πŸ†– Angular Dynamic Compile - Convert strings to Angular components

Built on Angular v21.2.9

WARNING 

Angular has changed, so it stricts many things for dynamic compilation. The only solution right now, is to simple copy the code into your code and it will work (like on https://angular-compile.corifeus.com/ ).

The code you just copy into your project is here:
https://github.com/patrikx3/angular-compile/tree/master/projects/angular-compile/src/lib

The package on the NPM is the pure TypeScript code. Not built using Angular.

Use case 

Dynamically compile standard strings to fully functional Angular components. Supports imports, exports, and standard context.

Install 

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

Check out how it works and code 

https://angular-compile.corifeus.com

https://github.com/patrikx3/angular-compile/blob/master/src/app/app.component.ts

IMPORTANT 

Make sure AOT is disabled in the angular.json:

{ 
    "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/workspace",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            
            // make sure it is false
            "aot": false,

            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": []
          }
    }
}

Minimum build requirement arguments 

ng build --aot=false --build-optimizer=false

Usage 

CompileAttribute is now a standalone component. You can use it either directly in a standalone component or via the legacy CompileModule NgModule β€” both paths are fully supported.

Standalone (Angular 16+) 

import { Component } from '@angular/core';
import { CompileAttribute } from 'p3x-angular-compile';

@Component({
  selector: 'my-page',
  standalone: true,
  imports: [CompileAttribute],
  template: `<span [p3x-compile]="template" [p3x-compile-ctx]="this"></span>`,
})
export class Page {
  template = '<button (click)="context.alert()">Dynamic template</button>';
  alert() { alert('ok'); }
}

Legacy NgModule (unchanged) 

import { CompileModule } from 'p3x-angular-compile';

@NgModule({
    imports: [
        CorifeusWebMaterialModule, // Optional
        CompileModule, // Required
    ],
    declarations: [
        Page,
    ],
    providers: [
    ],
    bootstrap: [ Page ]
})
export class Module { };

Template 

 <span 
 
 <!--- Not required -->
 *ngIf="isEnabled" 

 <!--- Required -->
 [p3x-compile]="template"

 <!--- Required -->
 [p3x-compile-ctx]="this"

 <!--- Not required, will just throw the component's exception if not provided -->
 [p3x-compile-error-handler]="handleCompileErrorHandler"

 <!--- Not required -->
 [p3x-compile-module]="dataModule"
 >     
</span>

Code 

// A page example
export class Page {
    
    isEnabled: boolean = true;
    
    dataModule : any =  {
        //schemas: [CUSTOM_ELEMENTS_SCHEMA],
        //declarations: [],
        imports: [
            MatButtonModule
        ],
        exports: [       
        ]
    }

    template: string = "<button mat-button mat-raised-button (click)="context.alert()">Dynamic template</button>";

    handleCompileErrorHandler(error: Error) {
        console.error(error)
    }

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

Options 

Reference for the Angular module settings which are available.

Dev environment end test 

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

http://localhost:4200

Errors 

Type x is part of the declarations of 2 modules 

Basically, you need a shared component.

https://stackoverflow.com/questions/42993580/angular-2-type-childcomponent-is-a-part-of-the-declarations-of-2-modules-par

AOT + JIT 

Since Angular 5.x.x + 

We cannot use AOT + JIT at once.

Info 

https://github.com/angular/angular/issues/20156#issuecomment-341767899

On the issue, you can see:

To reduce the payload, we do not ship the compiler in AOT.

So right now, it is not possible.

Although, there are some hacks, but you are on your own...
https://github.com/angular/angular/issues/20156#issuecomment-468686933

Size 

If you want very small bundle, use gzip.


Corifeus Network 

AI-powered network & email toolkit β€” free, no signup.

Web Β· network.corifeus.com MCP Β· npm i -g p3x-network-mcp

  • AI Network Assistant β€” ask in plain language, get a full domain health report
  • Network Audit β€” DNS, SSL, security headers, DNSBL, BGP, IPv6, geolocation in one call
  • Diagnostics β€” DNS lookup & global propagation, WHOIS, reverse DNS, HTTP check, my-IP
  • Mail Tester β€” live SPF/DKIM/DMARC + spam score + AI fix suggestions, results emailed (localized)
  • Monitoring β€” TCP / HTTP / Ping with alerts and public status pages
  • MCP server β€” 17 tools exposed to Claude Code, Codex, Cursor, any MCP client
  • Install β€” claude mcp add p3x-network -- npx p3x-network-mcp
  • Try β€” "audit example.com", "why do my emails land in spam? test me@example.com "
  • Source β€” patrikx3/network Β· patrikx3/network-mcp
  • Contact β€” patrikx3.com Β· donate

❀️ Support Our Open-Source Project 

If you appreciate our work, consider ⭐ starring this repository or πŸ’° making a donation to support server maintenance and ongoing development. Your support means the world to usβ€”thank you!


🌍 About My Domains 

All my domains, including patrikx3.com , corifeus.eu , and corifeus.com, are developed in my spare time. While you may encounter minor errors, the sites are generally stable and fully functional.


πŸ“ˆ Versioning Policy 

Version Structure: We follow a Major.Minor.Patch versioning scheme:

  • Major: πŸ“… Corresponds to the current year.
  • Minor: πŸŒ“ Set as 4 for releases from January to June, and 10 for July to December.
  • Patch: πŸ”§ Incremental, updated with each build.

🚨 Important Changes: Any breaking changes are prominently noted in the readme to keep you informed.

P3X-ANGULAR-COMPILE Build v2026.4.102

NPM Donate for PatrikX3 / P3X Contact Corifeus / P3X Like Corifeus @ Facebook