0.0.9 • Published 1 year ago

rnc-lazy-component v0.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

✨ RNC - Lazy Component - Angular ✨


#Medium article

Description

Simple directive to use in components in lazy mode, without losing the use of @Input or @Output

Installation

Right now the directive has only been tested on Angular12+ but it should work with older versions as well

npm i rnc-lazy-component

Inputs

The current developments directive accepts 4 inputs including: outputs, component, inputs and show.

INPUTDESCRIPTIONDEFAULTREQUIRED
showIf TRUE the component will be loadedTRUENO
componentThe component that we can lazy-loadundefinedYES
inputsObject that contain the inputs that we want to pass to the lazy-componentundefinedNO
outputsObject that contain the outputs that we want to pass to the lazy-componentundefinedNO

Example

Keep in mind that a complete example will be made using all the library features but that only the "component" input is a mandatory.

Remember to remove the component from your module.ts

Parent component.ts

// DECLARED VARS
   inputs = {NAME_OF_LAZY_COMPONENT_INPUT: 'Hi there!'};
   component;
   output = {NAME_OF_LAZY_COMPONENT_OUTPUT: (data) => this.myFunction1(data), NAME_OF_LAZY_COMPONENT_OUTPUT2: () => this.myFunction2()};
// LOADING OUR LAZY COMPONENT
 loadLazyComponent() {
    this.component = import('./PATH/NAME_OF_THE_COMPONENT.component'); // CHOOSING WHAT COMPONENT WE NEED
    this.show = true; // SHOW ONLY WHEN WE CALL THIS FUNCTION
  }

Parent component.html

// LOADING OUR LAZY COMPONENT
<ng-template libLazyComponent [outputs]="output"  [component]="component" [inputs]="inputs"></ng-template>

Lazy child component.ts

// DECLARED VARS
  @Input() NAME_OF_LAZY_COMPONENT_INPUT;
  @Output() NAME_OF_LAZY_COMPONENT_OUTPUT = new EventEmitter();
  @Output() NAME_OF_LAZY_COMPONENT_OUTPUT2 = new EventEmitter();

Lazy child component.html

<h1>{{NAME_OF_LAZY_COMPONENT_INPUT}}</h1>
0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago