2016-05-26 12 views

risposta

50

Ci possono essere diversi casi di vario tipo essere associati con il tag elemento con la variabile #myname modello.

Per ogni elemento c'è uno ElementRef e ViewContainerRef (forse altri da componenti o direttive applicate a quel tag).

Se l'elemento è un componente, esiste l'istanza del componente.

Non ci può essere anche una o più direttive applicate all'elemento

Con {read: SomeType} dici che tipo dovrebbe essere restituito dall'elemento con la variabile #myname modello.

Se non si fornisce il parametro read, @ViewChild() restituisce l'istanza

  • ElementRef se non v'è nessun componente applicato o la
  • istanza del componente se c'è.
  • Se si desidera ottenere qualcosa di diverso, è necessario comunicare esplicitamente utilizzando read.

Vedi anche angular 2/typescript : get hold of an element in the template

+0

'forse altri da componenti o direttive applicate a quel tag': Come possiamo ottenere il elenco completo del tipo possibile? – Ghetolay

+0

Le direttive e i componenti elencati in 'direttive: [...]' del componente corrente o in 'PLATFORM_DITECTIVES' dove corrispondono i selettori. Puoi utilizzare http://stackoverflow.com/questions/35233572/how-to-access-angular2-component-specific-data-in-console/35233711#35233711 per indagare su un'applicazione in esecuzione. –

+0

Ho quindi solo uno tra '' 'ElementRef''',' '' ViewContainerRef''' o '' 'Directive''', con componenti e direttive definiti dall'utente che sono solo sottotipi di' '' Directive'' '? Stavo pensando ad altri tipi, non a sottotipi definiti da direttive come gli utenti. Ad esempio, iniettando direttamente il '' 'HTMLElement''' al posto di' 'ElementRef'''. – Ghetolay

Problemi correlati