Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/patrikx3/angular-compile

🆖 Angular Dynamic Compile - Convert strings to Angular components
https://github.com/patrikx3/angular-compile

angular compile corifeus corifeus-builder corifeus-pages grunt html jit p3x typescript webpack

Last synced: about 8 hours ago
JSON representation

🆖 Angular Dynamic Compile - Convert strings to Angular components

Awesome Lists containing this project

README

        

[//]: #@corifeus-header

[![NPM](https://img.shields.io/npm/v/p3x-angular-compile.svg)](https://www.npmjs.com/package/p3x-angular-compile) [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://paypal.me/patrikx3) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Corifeus @ Facebook](https://img.shields.io/badge/Facebook-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) [![Uptime Robot ratio (30 days)](https://img.shields.io/uptimerobot/ratio/m780749701-41bcade28c1ea8154eda7cca.svg)](https://stats.uptimerobot.com/9ggnzcWrw)

# 🆖 Angular Dynamic Compile - Convert strings to Angular components v2024.10.104

**Bugs are evident™ - MATRIX️**

### NodeJS LTS is supported

### Built on NodeJs version

```txt
v22.3.0
```

# Built on Angular

```text
18.0.5
```

# Description


[//]: #@corifeus-header:end

# 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

```bash
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`:
```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

```bash
ng build --aot=false --build-optimizer=false
```

## Usage

```typescript
import { CompileModule} from "p3x-angular-compile"

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

#### Template
```html

*ngIf="isEnabled"


[p3x-compile]="template"


[p3x-compile-ctx]="this"


[p3x-compile-error-handler]="handleCompileErrorHandler"


[p3x-compile-module]="dataModule"
>

```

#### Code
```typescript
// A page example
export class Page {

isEnabled: boolean = true;

dataModule : any = {
//schemas: [CUSTOM_ELEMENTS_SCHEMA],
//declarations: [],
imports: [
MatButtonModule
],
exports: [
]
}

template: string = "Dynamic template";

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

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

### Options
[Reference for the Angular module settings which are available.](
https://github.com/angular/angular/blob/master/packages/core/src/metadata/ng_module.ts)

## Dev environment end test

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

[http://localhost:4200](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:
```text
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-footer

---

## 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!

### Server Availability
Our server may occasionally be down, but please be patient. Typically, it will be back online within 15-30 minutes. We appreciate your understanding.

### About My Domains
All my domains, including [patrikx3.com](https://patrikx3.com) and [corifeus.com](https://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**](https://corifeus.com/angular-compile) Build v2024.10.104

[![NPM](https://img.shields.io/npm/v/p3x-angular-compile.svg)](https://www.npmjs.com/package/p3x-angular-compile) [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)

[//]: #@corifeus-footer:end