2016-05-10 33 views
8

Desidero aggiungere una direttiva a un elemento da un'altra direttiva utilizzando la proprietà host, ma non sembra essere un modo per fare riferimento all'altra direttiva.Utilizzare la direttiva Angular2 in un'altra Direttiva

@Directive({ 
    selector: '[one]', 
    host: { '[two]': '"some-value"' } 
    // How can I reference DirectiveTwo here? 
}) 
export class DirectiveOne { } 

@Directive({ 
    selector: '[two]' 
}) 
export class DirectiveTwo { } 

Nel fare questo, ho la standard "non può legarsi a 'due' in quanto non è una nota di proprietà nativa" errore.

Qual è il modo corretto di fare riferimento e utilizzare una direttiva da un'altra?

risposta

10

Le direttive sono istanziate da Angular per i selettori che corrispondono a HTML aggiunto staticamente (elemento, id, attributo, classe, ...).
Non esiste alcun modo per istanziare le direttive utilizzando il parametro host del decoratore @Component() o @Directive(). Non è inoltre possibile creare dinamicamente le direttive utilizzando ViewContainerRef.createComponent() (ex DynamicComponentLoader)

Ottenere un riferimento a un'altra direttiva creata da Angular a causa di un codice HTML aggiunto staticamente sullo stesso elemento è tuttavia supportato.

+3

In tal caso, qual è la prassi migliore per l'estensione o l'utilizzo della funzionalità di un'altra direttiva? Questo sembra un limite piuttosto significativo. –

+0

@YonaAppletree hanno la stessa domanda in realtà. Come si può estendere una funzionalità direttiva con l'altra direttiva? Come riutilizzare il codice in questo caso? –

+0

Penso che questo sia un argomento per un aggiornamento più grande https://github.com/angular/issues/11606 –

Problemi correlati