Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@ngxd/core

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ngxd/core

NGXD is a dynamic pattern + library for Angular

  • 9.0.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
5.3K
increased by11.45%
Maintainers
1
Weekly downloads
 
Created
Source

✨🦊 NGX Dynamic for Angular Ivy and Angular 7, 8, 9+

preview

🥳 Best way to quickly use Dynamic Components with Angular

Npm Npm Downloads Npm Downloads Weekly Travis Licence

GitHub Contributors GitHub PR GitHub Issue GitHub Stars

Use like NgComponentOutlet but with @Input/@Output auto bindings:

<ng-container *ngxComponentOutlet="component"></ng-container>

Here is a demo example showing NGX Dynamic and Angular in action.

Dynamic Components In 5 minutes

There are several modes of operation of the directive.

Through The Parent Component

A simple variant of binding through the parent component.

@Component({
  template: `
    <ng-container
      *ngxComponentOutlet="component"></ng-container>`
      // using @ngxd/core 👆
})
class MyComponent {
  // 🥳 inputs and outputs will binding automatically
  @Input() entity;
  @Output() action;
  
  // your dynamic component 👇
  component = DynamicComponent;
}

Through The Context (please, use auto-binding like above)

Additionally there is autobinding through the context. This is useful when you need to display something through *ngFor. Context has a higher priority than the inputs in the component.

<ng-container *ngFor=“let color of colors”
  <ng-container
    *ngxComponentOutlet="
      component;
      context: { color: color }"></ng-container>
</ng-container>

Pipe For Selecting The Component

For ease of selecting the required component, there is ResolvePipe, which expects NgxdResolver to enter, and returns the required component.

<ng-container
  *ngxComponentOutlet="
    resolver | resolve: entity"></ng-container>

Through The Host Component (deprecated, please, use auto-binding like above)

Through the host component, when the inputs and outputs are initialized explicitly. This option is difficult to use and deprecated.

<!-- host component -->
<app-dynamic
    <!-- dynamic component -->
    [ngxComponentOutlet]="component"
    <!-- regular input -->
    [entity]="entity"
    <!-- regular output -->
    (action)="onAction($event)">
</app-dynamic>

Comparison

FeatureNgxComponentOutletComponentFactoryResolverNgComponentOutlet
Friendliness⭐⭐⭐⭐⭐
Dynamic Components
AOT support
Reactivity
Injector
NgModule
projectionNodes
Component Access
Lifecycle OnChanges⭕️ manually
Binding @Input()⭕️ manually
Binding @Output()⭕️ manually
Activate Event⭕️ manually
Deactivate Event⭕️ manually

Getting started

Step 1: Install @ngxd/core:

npm install --save @ngxd/core
# or
yarn add @ngxd/core

Step 2: Import the NgxdModule:

import { NgxdModule } from '@ngxd/core';

@NgModule({
  declarations: [ AppComponent ],
  // have import NgxdModule here 👇
  imports: [ BrowserModule, NgxdModule ],
  bootstrap: [ AppComponent ]
})
export class AppModule {}

Step 3: Use NgxComponentOutlet directly:

@Component({
  template: `
    <ng-container
      *ngxComponentOutlet="component"></ng-container>`
      // using @ngxd/core 👆
})
class MyComponent {
  // 🥳 inputs and outputs will binding automatically
  @Input() entity;
  @Output() action;
  
  // your dynamic component 👇
  component = DynamicComponent;
}

API

InputTypeDefaultRequiredDescription
[ngxComponentOutlet]Type<any>n/ayes
[ngxComponentOutletContext]anyn/ano
[ngxComponentOutletInjector]Injectorn/ano
[ngxComponentOutletContent]any[][]n/ano
[ngxComponentOutletNgModuleFactory]NgModuleFactory<any>n/ano
OutputTypeDescription
(ngxComponentOutletActivate)any
(ngxComponentOutletDeactivate)any

Keywords

FAQs

Package last updated on 19 Feb 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc