
Research
NPM targeted by malware campaign mimicking familiar library names
Socket uncovered npm malware campaign mimicking popular Node.js libraries and packages from other ecosystems; packages steal data and execute remote code.
Thanks to Juri Strumpflohner and ngx-lazy-el!
Thanks to Bruno Bradach for creating this version of Juri's implementation for use in non-angular applications.
My only contribution here is only in updating dependencies for use in newer angular projects.
NgxElement enables to lazy load Angular components in non-angular applications. The library will register a custom element to which you can pass an attribute to specify what component you want to load.
It's a great way to use Angular in your CMS platform in an efficient manner.
This library depends on Angular Elements. You can install it by running:
$ ng add @angular/elements
$ npm install ngx-el --save
First of all, expose the Angular Component that should be loaded via a customElementComponent property.
...
@NgModule({
declarations: [TalkComponent],
...
exports: [TalkComponent],
entryComponents: [TalkComponent]
})
export class TalkModule {
customElementComponent: Type<any> = TalkComponent;
...
}
Just like with the Angular Router, define the map of component selector and lazy module.
const lazyConfig = [
{
selector: 'talk',
loadChildren: () => import('./talk/talk.module').then(m => m.TalkModule)
}
];
@NgModule({
...,
imports: [
...,
NgxElementModule.forRoot(lazyConfig)
],
...
})
export class AppModule {
...
ngDoBootstrap() {}
}
You can load your Angular component by adding an <ngx-element>
tag to the DOM in your non-angular application like follows:
<ngx-element
selector="talk"
data-title="Angular Elements"
data-description="How to write Angular and get Web Components"
data-speaker="Bruno">
</ngx-element>
You can listen to events emitted by Angular components.
Add an @Output
event to your component:
...
@Output() tagClick: EventEmitter<string> = new EventEmitter();
...
Then add an event listener to the tagClick
event on the appropiate <ngx-element>
element:
const talks = document.querySelector('ngx-element[selector="talk"]');
talks.addEventListener('tagClick', event => {
const emittedValue = event.detail;
...
});
FAQs
A simple way to lazy load Angular components in non-angular projects
The npm package ngx-el receives a total of 3 weekly downloads. As such, ngx-el popularity was classified as not popular.
We found that ngx-el demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Research
Socket uncovered npm malware campaign mimicking popular Node.js libraries and packages from other ecosystems; packages steal data and execute remote code.
Research
Socket's research uncovers three dangerous Go modules that contain obfuscated disk-wiping malware, threatening complete data loss.
Research
Socket uncovers malicious packages on PyPI using Gmail's SMTP protocol for command and control (C2) to exfiltrate data and execute commands.