Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| development:angular:directivas [27/01/2020 07:44] – [angular: directivas] mate | development:angular:directivas [09/02/2020 14:46] (actual) – mate | ||
|---|---|---|---|
| Línia 23: | Línia 23: | ||
| export class DestacadoDirective { | export class DestacadoDirective { | ||
| - | constructor( | + | constructor( |
| const nativeElement = el.nativeElement; | const nativeElement = el.nativeElement; | ||
| | | ||
| Línia 31: | Línia 31: | ||
| } | } | ||
| }</ | }</ | ||
| - | * **ElementRef** | + | * **ElementRef** |
| + | * aceptando parámetros desde el componente .html< | ||
| + | import {Directive, ElementRef, Input, OnInit} from ' | ||
| + | @Directive({ | ||
| + | selector: ' | ||
| + | }) | ||
| + | |||
| + | export class DestacadoDirective implements OnInit { | ||
| + | @Input(' | ||
| + | constructor(private el: ElementRef) { } | ||
| + | ngOnInit(): void { | ||
| + | const nativeElement = this.el.nativeElement; | ||
| + | nativeElement.style.fontSize = ' | ||
| + | nativeElement.style.color = this.userColor || ' | ||
| + | nativeElement.style.textAlign = ' | ||
| + | nativeElement.style.border = '2px solid ' + (this.userColor || ' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | * usamos el decorador **@Input** para recibir el parámetro que recibimos desde el html:< | ||
| + | <div class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <div appDestacado> | ||
| + | <div [appDestacado]="' | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === directiva estructural personalizada | ||
| + | <code bash>ng g[enerate] d[irective] directivas/ | ||
| + | * en contraposición a las directivas de atributo, tenemos que acceder a través del constructor a la plantilla a la que la directive puede acceder, es decir, a la pantilla que posiblemente necesitemos modificar | ||
| + | * la directiva ha de tener un parámetro de entrada (a través de **@Input**) | ||
| + | * ejemplo:< | ||
| + | <div class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <p *appMult=" | ||
| + | Saludos | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | <sxh typescript> | ||
| + | import { Directive } from ' | ||
| + | |||
| + | @Directive({ | ||
| + | selector: ' | ||
| + | }) | ||
| + | |||
| + | export class MultDirective { | ||
| + | |||
| + | constructor( | ||
| + | private templateRef: | ||
| + | private viewContainer: | ||
| + | |||
| + | @Input() set appMult(numero: | ||
| + | for (let i = 0; i < numero; i++) { | ||
| + | this.viewContainer.createEmbeddedView(this.templateRef); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||