Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

ng-dynamic-component

gund102.6kMIT10.8.2TypeScript support: included

Dynamic components with full life-cycle support for inputs and outputs

angular, angular2, ng, dynamic, component, input, output, life-cycle

readme

ng-dynamic-component

Dynamic components with full life-cycle support for inputs and outputs

Release Workflow Test Workflow Appveyor Coverage Maintainability Npm Npm Downloads Licence semantic-release

Hey! There is a proposal for new API!

So if you are using this library please give your vote/feedback.

<summary>Compatibility with Angular</summary>
Angular ng-dynamic-component NPM package
>=14.1.3 10.3.1 ng-dynamic-component@^10.3.1
>=14.x.x 10.2.x ng-dynamic-component@^10.2.0
13.x.x 10.1.x ng-dynamic-component@~10.1.0
12.x.x 9.x.x ng-dynamic-component@^9.0.0
11.x.x 8.x.x ng-dynamic-component@^8.0.0
10.x.x 7.x.x ng-dynamic-component@^7.0.0
9.x.x 6.x.x ng-dynamic-component@^6.0.0
8.x.x 5.x.x ng-dynamic-component@^5.0.0
7.x.x 4.x.x ng-dynamic-component@^4.0.0
6.x.x 3.x.x ng-dynamic-component@^3.0.0
5.x.x 2.x.x ng-dynamic-component@^2.0.0
4.x.x 1.x.x ng-dynamic-component@^1.0.0
2.x.x 0.x.x ng-dynamic-component@^0.0.0

Installation

$ npm install ng-dynamic-component --save

Usage

DynamicComponent

Import DynamicModule where you need to render dynamic components:

import { DynamicModule } from 'ng-dynamic-component';

@NgModule({
  imports: [DynamicModule],
})
export class MyModule {}

Then in your component's template include <ndc-dynamic> where you want to render component and bind from your component class type of component to render:

@Component({
  selector: 'my-component',
  template: ` <ndc-dynamic [ndcDynamicComponent]="component"></ndc-dynamic> `,
})
class MyComponent {
  component = Math.random() > 0.5 ? MyDynamicComponent1 : MyDynamicComponent2;
}

Standalone API

Since v10.7.0

You may use <ndc-dynamic> as a standalone component:

import { DynamicComponent } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: ` <ndc-dynamic [ndcDynamicComponent]="component"></ndc-dynamic> `,
  imports: [DynamicComponent],
  standalone: true,
})
class MyComponent {
  component = Math.random() > 0.5 ? MyDynamicComponent1 : MyDynamicComponent2;
}

NOTE: Hovewer you should be aware that this will only import <ndc-dynamic> into your component and nothing else so things like dynamic inputs/outputs will not work and you will have to import them separately (see their respective sections).

If you still need to use both <ndc-dynamic> and dynamic inputs/outputs it is recommended to keep using DynamicModule API.

Singal based inputs/outputs

Since v10.8.0

If you want to dynamically render signal based components - see signal-component-io package.

NgComponentOutlet

You can also use NgComponentOutlet directive from @angular/common instead of <ndc-dynamic>.

Import DynamicIoModule where you need to render dynamic inputs:

import { DynamicIoModule } from 'ng-dynamic-component';

@NgModule({
  imports: [DynamicIoModule],
})
export class MyModule {}

Now apply ndcDynamicInputs and ndcDynamicOutputs to ngComponentOutlet:

@Component({
  selector: 'my-component',
  template: `<ng-template [ngComponentOutlet]="component"
                           [ndcDynamicInputs]="inputs"
                           [ndcDynamicOutputs]="outputs"
                           ></ng-template>`
})
class MyComponent {
  component = MyDynamicComponent1;
  inputs = {...};
  outputs = {...};
}

Also you can use ngComponentOutlet with * syntax:

@Component({
  selector: 'my-component',
  template: `<ng-container *ngComponentOutlet="component;
                            ndcDynamicInputs: inputs;
                            ndcDynamicOutputs: outputs"
                            ></ng-container>`
})
class MyComponent {
  component = MyDynamicComponent1;
  inputs = {...};
  outputs = {...};
}

Standalone API

Since v10.7.0

You may use dynamic inputs/outputs with *ngComponentOutlet as a standalone API:

import { ComponentOutletInjectorModule } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `<ng-container *ngComponentOutlet="component;
                            ndcDynamicInputs: inputs;
                            ndcDynamicOutputs: outputs"
                            ></ng-container>`
  imports: [ComponentOutletInjectorModule],
  standalone: true,
})
class MyComponent {
  component = MyDynamicComponent1;
  inputs = {...};
  outputs = {...};
}

If you want to use standard dynamic inputs/outputs with ngComponentOutlet as a standalone API you need to add the DynamicIoDirective to your imports:

import { DynamicIoDirective, ComponentOutletInjectorModule } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `<ng-container *ngComponentOutlet="component;
                            ndcDynamicInputs: inputs;
                            ndcDynamicOutputs: outputs"
                            ></ng-container>`
  imports: [DynamicIoDirective, ComponentOutletInjectorModule],
  standalone: true,
})
class MyComponent {
  component = MyDynamicComponent1;
  inputs = {...};
  outputs = {...};
}

Inputs and Outputs

You can pass inputs and outputs to your dynamic components:

Import module DynamicIoModule and then in template:

@Component({
  selector: 'my-component',
  template: `
    <ndc-dynamic
      [ndcDynamicComponent]="component"
      [ndcDynamicInputs]="inputs"
      [ndcDynamicOutputs]="outputs"
    ></ndc-dynamic>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  inputs = {
    hello: 'world',
    something: () => 'can be really complex',
  };
  outputs = {
    onSomething: (type) => alert(type),
  };
}

@Component({
  selector: 'my-dynamic-component1',
  template: 'Dynamic Component 1',
})
class MyDynamicComponent1 {
  @Input()
  hello: string;
  @Input()
  something: Function;
  @Output()
  onSomething = new EventEmitter<string>();
}

Here you can update your inputs (ex. inputs.hello = 'WORLD') and they will trigger standard Angular's life-cycle hooks (of course you should consider which change detection strategy you are using).

Standalone API

Since v10.7.0

You can use standalone API to pass dynamic inputs/outputs using DynamicIoDirective with DynamicComponent or ngComponentOutlet:

import { DynamicIoDirective, DynamicComponent } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ndc-dynamic
      [ndcDynamicComponent]="component"
      [ndcDynamicInputs]="inputs"
      [ndcDynamicOutputs]="outputs"
    ></ndc-dynamic>
  `,
  imports: [DynamicIoDirective, DynamicComponent]
})
class MyComponent {
  component = MyDynamicComponent1;
  inputs = {...};
  outputs = {...};
}

Output template variables

Since v6.1.0

When you want to provide some values to your output handlers from template - you can do so by supplying a special object to your output that has shape {handler: fn, args: []}:

@Component({
  selector: 'my-component',
  template: `
    <ndc-dynamic
      [ndcDynamicComponent]="component"
      [ndcDynamicOutputs]="{
        onSomething: { handler: doSomething, args: ['$event', tplVar] }
      }"
    ></ndc-dynamic>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  tplVar = 'some value';
  doSomething(event, tplValue) {}
}

Here you can specify at which argument event value should arrive via '$event' literal.

HINT: You can override event literal by providing IoEventArgumentToken in DI.

Output Handler Context

Since v10.4.0

You can specify the context (this) that will be used when calling the output handlers by providing either:

  • IoEventContextToken - which will be; injected and used directly as a context value
  • IoEventContextProviderToken - which will be provided and instantiated within the IoService and used as a context value.
    This useful if you have some generic way of retrieving a context for every dynamic component so you may encapsulate it in an Angular DI provider that will be instantiated within every component's injector;

Example using your component as an output context:

import { IoEventContextToken } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ndc-dynamic
      [ndcDynamicComponent]="component"
      [ndcDynamicOutputs]="{
        onSomething: doSomething
      }"
    ></ndc-dynamic>
  `,
  providers: [
    {
      provide: IoEventContextToken,
      useExisting: MyComponent,
    },
  ],
})
class MyComponent {
  component = MyDynamicComponent1;
  doSomething(event) {
    // Here `this` will be an instance of `MyComponent`
  }
}

Component Creation Events

You can subscribe to component creation events, being passed a reference to the ComponentRef:

@Component({
  selector: 'my-component',
  template: `
    <ndc-dynamic
      [ndcDynamicComponent]="component"
      (ndcDynamicCreated)="componentCreated($event)"
    ></ndc-dynamic>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  componentCreated(compRef: ComponentRef<any>) {
    // utilize compRef in some way ...
  }
}

Attributes

Since v2.2.0 you can now declaratively set attributes, as you would inputs, via ndcDynamicAttributes.

Import module DynamicAttributesModule and then in template:

import { AttributesMap } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ndc-dynamic
      [ndcDynamicComponent]="component"
      [ndcDynamicAttributes]="attrs"
    ></ndc-dynamic>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  attrs: AttributesMap = {
    'my-attribute': 'attribute-value',
    class: 'some classes',
  };
}

Remember that attributes values are always strings (while inputs can be any value). So to have better type safety you can use AttributesMap interface for your attributes maps.

Also you can use ngComponentOutlet and ndcDynamicAttributes with * syntax:

import { AttributesMap } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ng-container
      *ngComponentOutlet="component; ndcDynamicAttributes: attrs"
    ></ng-container>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  attrs: AttributesMap = {
    'my-attribute': 'attribute-value',
    class: 'some classes',
  };
}

Standalone API

Since v10.7.0

You can use standalone API to pass dynamic inputs/outputs using DynamicAttributesDirective with DynamicComponent or ngComponentOutlet:

import { DynamicAttributesDirective, DynamicComponent } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ndc-dynamic
      [ndcDynamicComponent]="component"
      [ndcDynamicAttributes]="attrs"
    ></ndc-dynamic>
  `,
  imports: [DynamicAttributesDirective, DynamicComponent]
})
class MyComponent {
  component = MyDynamicComponent1;
  attrs: AttributesMap = {...};
}

Directives (experimental)

Since v3.1.0 you can now declaratively set directives, via ndcDynamicDirectives.

NOTE: There is a known issue with OnChanges hook not beign triggered on dynamic directives since this part of functionality has been removed from the core as Angular now supports this out of the box for dynamic components.

In dynamic directives queries like @ContentChild and host decorators like @HostBinding will not work due to involved complexity required to implement it (but PRs are welcome!).

Import module DynamicDirectivesModule and then in template:

import { dynamicDirectiveDef } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ng-container
      [ngComponentOutlet]="component"
      [ndcDynamicDirectives]="dirs"
    ></ng-container>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  dirs = [dynamicDirectiveDef(MyDirective)];
}

It's also possible to bind inputs and outputs to every dynamic directive:

import { dynamicDirectiveDef } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ng-container
      [ngComponentOutlet]="component"
      [ndcDynamicDirectives]="dirs"
    ></ng-container>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  directiveInputs = { prop1: 'value' };
  directiveOutputs = { output1: (evt) => this.doSomeStuff(evt) };
  dirs = [
    dynamicDirectiveDef(
      MyDirective,
      this.directiveInputs,
      this.directiveOutputs,
    ),
  ];
}

To change inputs, just update the object:

class MyComponent {
  updateDirectiveInput() {
    this.directiveInputs.prop1 = 'new value';
  }
}

You can have multiple directives applied to same dynamic component (only one directive by same type):

import { dynamicDirectiveDef } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ng-container
      [ngComponentOutlet]="component"
      [ndcDynamicDirectives]="dirs"
    ></ng-container>
  `,
})
class MyComponent {
  component = MyDynamicComponent1;
  dirs = [
    dynamicDirectiveDef(MyDirective1),
    dynamicDirectiveDef(MyDirective2),
    dynamicDirectiveDef(MyDirective3),
    dynamicDirectiveDef(MyDirective1), // This will be ignored because MyDirective1 already applied above
  ];
}

Standalone API

Since v10.7.0

You can use standalone API to pass dynamic inputs/outputs using DynamicDirectivesDirective with DynamicComponent or ngComponentOutlet:

import { DynamicDirectivesDirective, DynamicComponent } from 'ng-dynamic-component';

@Component({
  selector: 'my-component',
  template: `
    <ng-container
      [ngComponentOutlet]="component"
      [ndcDynamicDirectives]="dirs"
    ></ng-container>
  `,
  imports: [DynamicDirectivesDirective, DynamicComponent]
})
class MyComponent {
  component = MyDynamicComponent1;
  dirs = [...];
}

Extra

You can have more advanced stuff over your dynamically rendered components like setting custom injector ([ndcDynamicInjector]) or providing additional/overriding providers ([ndcDynamicProviders]) or both simultaneously or projecting nodes ([ndcDynamicContent]).

Since v10.6.0: You can provide custom NgModuleRef ([ndcDynamicNgModuleRef]) or EnvironmentInjector ([ndcDynamicEnvironmentInjector]) for your dynamic component.


NOTE: In practice functionality of this library is split in two pieces:

  • one - component (ndc-dynamic) that is responsible for instantiating and rendering of dynamic components;
  • two - directive (ndcDynamic also bound to ndc-dynamic) that is responsible for carrying inputs/outputs to/from dynamic component by the help of so called DynamicComponentInjector.

Thanks to this separation you are able to connect inputs/outputs and life-cycle hooks to different mechanisms of injecting dynamic components by implementing DynamicComponentInjector and providing it via DynamicComponentInjectorToken in DI.

It was done to be able to reuse NgComponentOutlet added in Angular 4-beta.3.

To see example of how to implement custom component injector - see ComponentOutletInjectorDirective that is used to integrate NgComponentOutlet directive with inputs/outputs.

Contributing

You are welcome to contribute to this project. Simply follow the contribution guide.

License

MIT © Alex Malkevich

changelog

ng-dynamic-component - Changelog

10.8.2 (2025-01-21)

Bug Fixes

  • io: model signals output compatibility (9ed8d69), closes #524

10.8.1 (2025-01-09)

Bug Fixes

  • api: add missing ngOnDestroy method back to IoService (c7026e2)

10.8.0 (2025-01-07)

Features

  • io: add support for signal based dynamic components IO (#520) (c3a1444)

10.8.0-next.1 (2024-12-17)

Features

  • io: add support for signal based dynamic components IO (#520) (a8f62d5)

10.7.0 (2023-03-15)

Features

  • api: add standalone support to components and directives (e3fe906)

10.6.2 (2023-03-15)

Bug Fixes

  • api: export event context symbols (c5bbaf6), closes #503

10.6.1 (2023-01-26)

Bug Fixes

  • lib: setup d.ts rollup as single file (2ace410)

10.6.0 (2023-01-25)

Features

  • add NgModuleRef and EnvironmentInjector inputs to ndc-dynamic component (bfaceb3)

10.5.1 (2022-09-01)

Bug Fixes

  • lib: remove circular refs in IoService (6d225e6), closes #480

10.5.1-next.1 (2022-09-01)

Bug Fixes

  • lib: remove circular refs in IoService (6d225e6), closes #480

10.5.0 (2022-08-29)

Features

  • lib: enable strict mode in Typescript and Angular (fbac529)

10.4.0 (2022-08-28)

Bug Fixes

  • io: simplify IoService to have just one method for updates (21b0e20)
  • lib: make sure all inputs chanegs are sent to new component (25e4d34)

Features

  • api: expose WindowRef and ReflectRef services as public api (c634e20)
  • outputs: allow to specify context for output handlers via Tokens (9a03765)

Performance Improvements

  • io: check if component has OnChanges hook once (88f187f)
  • io: do not detect any changes when there is no component (8e7dbce)

10.3.1 (2022-08-27)

Bug Fixes

  • lib: specify minimum version of Angular v14.1.3 (a5fe899)

10.3.0 (2022-08-27)

Features

  • lib: use new ComponentRef API to set inputs on components (7cc48a6)
  • ng: update to latest Angular v14 (64d82cc)

10.2.1 (2022-06-17)

Bug Fixes

  • deps: update peer deps to allow Angular v13+ (969aef9)

Reverts

  • Revert "fix(component): add compatibility with Angular v12 to component rendering" (21de6fd)

10.2.0 (2022-06-16)

Bug Fixes

  • component: add compatibility with Angular v12 to component rendering (18c3922), closes #472

Features

  • ng: add support for Angular v14+ (451f04e), closes #469

10.2.0-next.3 (2022-06-16)

Reverts

  • Revert "docs(readme): update compat table" (b317a3e)

10.2.0-next.2 (2022-06-16)

Bug Fixes

  • component: add compatibility with Angular v12 to component rendering (18c3922), closes #472

10.2.0-next.1 (2022-06-15)

Features

  • ng: add support for Angular v14+ (451f04e), closes #469

10.1.0 (2021-12-17)

Bug Fixes

  • components: re-create dynamic component when other inputs are changed (ea127ba)
  • deps: add RxJs v7 to supported peer dependencies range (c6700fb), closes #467

Features

  • component: add support for component generic (fe8bb5d)

10.0.0 (2021-12-01)

Features

  • ng: update to Angular v13 (b74a0bb)

BREAKING CHANGES

  • ng: Now library updated and compiled with Angular v13. No API changes.

9.0.0 (2021-12-01)

Bug Fixes

  • api: remove deprecated APIs (f7757de)

Features

BREAKING CHANGES

  • ng: No API changes were introduced
  • api: Removed APIs:
  • Removed ComponentInjector - use DynamicComponentInjector
  • Removed COMPONENT_INJECTOR - use DynamicComponentInjectorToken

8.0.1 (2021-01-16)

Bug Fixes

  • io: invoke markForCheck when output handler is called (2a262d2), closes #430

8.0.0 (2020-11-19)

Features

  • ng: update to Angular v11 (5e3ff21)

BREAKING CHANGES

  • ng: Library requires Angular v11 as a peer dependency. No other public API changes.

7.0.3 (2020-11-02)

Bug Fixes

  • upgrade tslib from 2.0.0 to 2.0.2 (ce04753)

7.0.2 (2020-10-14)

Bug Fixes

  • io: only add changed inputs to changes in OnChanges hook (1d8c6c0), closes #403

7.0.1 (2020-06-29)

Bug Fixes

  • attributes: properly resolve constructor types from directives (16efb28)

7.0.0 (2020-06-28)

Bug Fixes

  • api: replace deprecated DynamicModule with component module (412d517)
  • package: update Angular peer dependencies from v9 to v10 (c4c059e)

Features

  • deps: upgrade to Angular v10 (f6a6ef7)

BREAKING CHANGES

  • package: Now you are required to have Angular v10 as a peer dependency.
  • api: Previously deprecated module contained all the pieces of public API in on module and this was not tree-shakeable. Now it has been removed and replaced by the module that only contains DynamicComponent. All other pieces are available in their own modules.
  • deps: Now library is built using Angular v10

6.1.0 (2020-03-13)

Bug Fixes

  • component: add DynamicIo module to component module (eac4c5b)
  • io: update type of event argument token (3d85691)

Features

  • modules: split every directive into separate module (5f2985b)
  • outputs: add ability to pass template variables to outputs (a13c7d6), closes #331

6.1.0-next.1 (2020-03-13)

Bug Fixes

  • component: add DynamicIo module to component module (eac4c5b)
  • io: update type of event argument token (3d85691)

Features

  • modules: split every directive into separate module (5f2985b)
  • outputs: add ability to pass template variables to outputs (a13c7d6), closes #331

6.0.0 (2020-02-07)

Features

  • lib: upgrade to Angular v9 RC 12 (e4e1e8e)
  • package: update to stable Angular v9 (e1abbc2)

BREAKING CHANGES

  • lib: Now library is compiled with NG CLI v9 but still for View Engine as per recommendation from Angular team. Public APIs mostly did not change. There is 1 deprecation in DynamicModule.withComponents() - now it is not required to register dynamic components and so the method does not make sense anymore - please use DynamicModule.forRoot() instead

6.0.0-next.2 (2020-02-07)

Features

  • package: update to stable Angular v9 (e1abbc2)

6.0.0-next.1 (2020-02-02)

Features

  • lib: upgrade to Angular v9 RC 12 (e4e1e8e)

BREAKING CHANGES

  • lib: Now library is compiled with NG CLI v9 but still for View Engine as per recommendation from Angular team. Public APIs mostly did not change. There is 1 deprecation in DynamicModule.withComponents() - now it is not required to register dynamic components and so the method does not make sense anymore - please use DynamicModule.forRoot() instead

5.1.0-next.1 (2020-02-02)

Features

  • lib: upgrade to Angular v9 RC 12 (1a8dca6)

5.0.6 (2020-01-29)

Bug Fixes

  • dist: fix the readme file copying (56d3d9f)
  • dist: use copy instead of copyfiles (f65e12d)

5.0.5 (2020-01-29)

Bug Fixes

  • dist: try copying readme inothe order (c5d0c94)

5.0.4 (2020-01-29)

Reverts

  • fix(dist): add readme file to package (1eed88a)

5.0.3 (2020-01-29)

Bug Fixes

  • dist: add readme file to package (e973a42)

5.0.2 (2020-01-29)

Bug Fixes

  • dist: correctly run pack script before publishing package (d5037db)

5.0.1 (2020-01-29)

Bug Fixes

  • build: migrate to Angular CLI builder (321cc38)
  • dist: include CHANGELOG.md into distribution package (99f46bc)

5.0.0 (2019-07-02)

Bug Fixes

  • attributes: do not crash when component does not exist (723c240)
  • build: removing types, conflicting (4e626f3), closes #260
  • directives: fire ngDoCheck hook for dynamic directives (d3e5888)
  • directives: recreate directives when component changes (85f10db)
  • husky: fixing mistype in pre-commit (5866158), closes #260
  • io-service: mark for check component on changes (08df6ca)
  • tslint: update tslint rules for new codelyzer (9d7d964), closes #260

4.0.0 (2018-10-26)

Bug Fixes

  • io-service: make sure no errors thrown when component injector is not available (4a0cac2), closes #175 #153
  • module: use window reference via DI (1c05874), closes #186

Features

  • core: update to angular 7 (a5b2e34)
  • directives: Add ndcDynamicDirectives directive (147189e), closes #160

BREAKING CHANGES

  • core: Library updates to angular v7. No user API changes.

3.0.0 (2018-05-16)

Bug Fixes

  • attributes: Reassign attributes if new dynamic component was set (48bacb4)
  • directive: Check if inputs really changed when angular triggers change detection on them (14c953c), closes #111
  • directive: Check if inputs really changed when angular triggers change detection on them (cc91db3), closes #111
  • directive: Update inputs changes when both comp and inputs are changed (7a05b6a), closes #88
  • ng: Upgrade to Angular 6, ngrx 6 and typescript (393b739), closes #139
  • rxjs: Remove old import from entry point (d6ad500), closes #125
  • rxjs: Use lettable operators instead of prototype mutation (91c1cbd), closes #118

Features

  • attributes: Add dynamic attributes directive (71f10ad), closes #120
  • attributes: Add support for ngComponentOutlet * syntax (2130057)
  • attributes: Add support for ndc-dynamic component (d426a15)
  • directive: Added component creation event (52a1951)

BREAKING CHANGES

  • ng: Upgraded to Angular 6. No public API changes.

2.1.1 (2018-04-19)

Bug Fixes

Features

  • directive: Add support for bound inputs and outputs (7008156), closes #102

2.0.3 (2017-11-07)

Bug Fixes

  • package: Fix path to type definition file (0be2991)

2.0.2 (2017-11-06)

Bug Fixes

  • build: Downgrade to TS v2.4 to properly generate decorators (ed26415), closes #69

2.0.1 (2017-11-05)

Bug Fixes

  • package: Fix publish path command (40c0090)
  • package: Fix published version with selamntic-release (ce37e3b)
  • remade: Remove a note about tslib (0590fa9)

2.0.0 (2017-11-05)

Bug Fixes

  • build: Create Flat ESM modules ES5 and ES2015 (3726022), closes #27
  • build: Publish only dist folder (878d6b8)
  • directive: check undefined/null inputs/outputs (d31df71)
  • directive: Correctly use ngComponentOutlet component instance (9e36c79)
  • directive: Guard NgComponentOutlet that may be not injected (cba008d)
  • directive: Guard ngOnChnages invokation if not specified by dynamic component (51c795b)
  • directive: Safely access component outlet instance (6c086d8)
  • directive: Update differ usage according to angular 5 (eab9ecd)
  • package: Add tslib to peer dependencies (b27eecd)
  • package: Add typings property (1650a17)
  • package: Include src directory to published package (057f7b9)
  • package: Remove src folder from published package (570ca6e)
  • package: Unlock angular versions (22d4563)
  • strictNullChecks: Comply with strict null checks mode (0adda4a)

Features

  • dynamic-directive: Add support for * syntax with ngComponentOutlet directive (2e8b2f9), closes #43 #42
  • release: Update docs and introduce breaking change for major version increment (61aae93)

BREAKING CHANGES

  • build: The structure of published packaged changed, but it should not affect public APIs
  • release: Upgrade to Angular 4

0.0.4 (2017-02-18)

Bug Fixes

  • directive: Small improvement due to unit tests (644fdda)

0.0.3 (2017-02-16)

Bug Fixes

  • directive: Fix Dynamic directive ti work without Dynamic component (0432d4a)

1.0.0-beta.4 (2017-02-18)

Bug Fixes

  • updates: Commits from v0.0.4 (aa99da1)

1.0.0-beta.3 (2017-02-16)

1.0.0-beta.2 (2017-02-16)

Bug Fixes

  • directive: Fix Dynamic directive selector to work without Dynamic component (8531365)

1.0.0-beta.1 (2017-02-16)

Features

  • directive: Add support for NgComponentOutlet (6acd8b1)

1.0.0-beta.0 (2017-02-16)

Bug Fixes

  • directive: Fix breaking changes in Dynamic directive (0eca84a)

0.0.4 (2017-02-18)

Bug Fixes

  • directive: Small improvement due to unit tests (644fdda)

0.0.3 (2017-02-16)

Bug Fixes

  • directive: Fix Dynamic directive ti work without Dynamic component (0432d4a)

1.0.0-beta.3 (2017-02-16)

1.0.0-beta.2 (2017-02-16)

Bug Fixes

  • directive: Fix Dynamic directive selector to work without Dynamic component (8531365)

1.0.0-beta.1 (2017-02-16)

Features

  • directive: Add support for NgComponentOutlet (6acd8b1)

1.0.0-beta.0 (2017-02-16)

Bug Fixes

  • directive: Fix breaking changes in Dynamic directive (0eca84a)

0.0.3 (2017-02-16)

Bug Fixes

  • directive: Fix Dynamic directive ti work without Dynamic component (0432d4a)

1.0.0-beta.2 (2017-02-16)

Bug Fixes

  • directive: Fix Dynamic directive selector to work without Dynamic component (8531365)

1.0.0-beta.1 (2017-02-16)

Features

  • directive: Add support for NgComponentOutlet (6acd8b1)

1.0.0-beta.0 (2017-02-16)

Bug Fixes

  • directive: Fix breaking changes in Dynamic directive (0eca84a)

0.0.2 (2017-02-16)