Added ng-let directive
This commit is contained in:
17
src/app/directives/directives.module.ts
Normal file
17
src/app/directives/directives.module.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
|
import { NgLetDirective } from './ng-let.directive';
|
||||||
|
|
||||||
|
const exportedDirectives = [
|
||||||
|
NgLetDirective
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
...exportedDirectives
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
...exportedDirectives
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class DirectivesModule { }
|
||||||
34
src/app/directives/ng-let.directive.ts
Normal file
34
src/app/directives/ng-let.directive.ts
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import {
|
||||||
|
Directive,
|
||||||
|
Input,
|
||||||
|
OnInit,
|
||||||
|
TemplateRef,
|
||||||
|
ViewContainerRef
|
||||||
|
} from '@angular/core';
|
||||||
|
|
||||||
|
export class NgLetContext {
|
||||||
|
$implicit: any = undefined;
|
||||||
|
ngLet: any = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Directive({
|
||||||
|
// tslint:disable-next-line:directive-selector
|
||||||
|
selector: '[ngLet]'
|
||||||
|
})
|
||||||
|
export class NgLetDirective implements OnInit {
|
||||||
|
private readonly _context = new NgLetContext();
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
set ngLet(value: any) {
|
||||||
|
this._context.$implicit = this._context.ngLet = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private readonly _vcr: ViewContainerRef,
|
||||||
|
private readonly _templateRef: TemplateRef<NgLetContext>
|
||||||
|
) { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this._vcr.createEmbeddedView(this._templateRef, this._context);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user