In angolare 2, SVG-rect è un componente che crea rect come qui di seguito,Rimuovere l'host HTML selettori elemento create dalla componente angolare
<svg height="550" width="450" x="0" y="0">
<g id="svgGroup">
<svg-rect>
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
</svg-rect>
<svg-rect>
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
</svg-rect>
</g>
</svg>
ma questo non renda rect perché dei tag elemento speciali creati. Se svg-rect tag vengono rimossi rende l'rect
<svg height="550" width="450" x="0" y="0">
<g id="svgGroup">
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
<!--template bindings={}-->
<rect x="10" y="10" height="100" width="100" fill="red" stroke="#000" stroke-width="2"></rect>
<!--template bindings={}-->
</g>
</svg>
In 1.x angolare, c'è sostituire: 'true' che rimuove i tag direttiva con l'uscita compilato. Possiamo implementare lo stesso in angular2?
Funziona bene ovunque sia necessario un elemento valido, l'ho appena usato per un piccolo componente per le intestazioni di tabella
@David - Non lo troverai nei manuali (ancora), ma per assicurarti che è benedetto: ecco il thread in cui gli utenti fanno il caso che a volte (svg e tabelle) devi usare selettori di attributo per modificare la struttura : https://github.com/angular/angular/issues/11280. In risposta, la funzionalità è stata aggiunta (beh, ripristinata, in realtà) qui: https://github.com/angular/angular/pull/11808. –
ma cosa succede se voglio aggiungere più elementi all'interno di un elemento (manualmente, non con * ngFor) –
Marcel
Per citare il Angular 1 to Angular 2 Upgrade Strategy doc:
fonte
2015-12-15 03:25:32
Un altro approccio per rimuovere l'host del componente che utilizzo.
direttiva
remove-host
Utilizzando questa direttiva;
<avatar [name]="hero.name" remove-host></avatar>
In
remove-host
direttiva, tutti i figli dellanativeElement
sono inseriti prima che l'host e poi l'elemento host viene rimosso.Sample Example Gist
In base al caso d'uso, potrebbe esserci qualche problema di prestazioni.
fonte
2016-03-07 06:04:48 Bhavik
I problemi di prestazioni potrebbero essere ciò che pensavo all'inizio. Ma attualmente sto usando in questo modo i miei componenti di light design per sostituire l'host host, altrimenti ho problemi con la visualizzazione di html – Kuncevic
@Kuncevich Buono a sapersi che la mia risposta ha aiutato, i colli di bottiglia delle prestazioni si sarebbero creati quando l'elemento 'ChangeDetection' è stato attivato come' shadow DOM! == DOM attuale. Ma se non ci sono molti elementi, questo non sarebbe così grande. Speriamo che;) – Bhavik
Abbiamo bisogno di qualche analogia di Angular1 'replace: true' http://stackoverflow.com/questions/22497706/angular-directive-replace-true qualcuno ha detto che questa funzione è in realtà è in angular2 ma supportata non ufficialmente. – Kuncevic
C'è un altro approccio che possiamo ottenere il modello di un componente dal componente.
In primo luogo, creiamo la componente, la cui etichetta speriamo di rimuovere dal browser rendere
Poi, nel modello di un altro componente, scriviamo (non stiamo cercando di rimuovere il tag.):
Poi, abbiamo in del browser qualcosa di simile:
Così, abbiamo portato
<p>{{value}}</p>
fuori dalla TlNoTagComponent .<tl-no-tag></tl-no-tag>
continuerà ad esserci, ma non bloccherà nessun css o svg-thing.fonte
2016-12-30 08:37:46 Timathon
"Il modello ha il proprio ambito di validità separato, quali variabili può vedere il modello?" Dai un'occhiata a questo (nella parte Contenuto modello): https://blog.angular-university.io/angular-ng-template-ng-container-ngtemplateoutlet/ – Timathon
Problemi correlati