2016-04-08 15 views
7

Sto provando a creare il mio componente modale, che sarei in grado di riutilizzare attraverso le mie app Angular2. Sto prendendo in considerazione approcci diversi e mi chiedo se sia possibile creare @Component che funge anche da @Injectable? Sto considerando questo, perché voglio creare un modello per il modale e tenerlo in un posto.Componente come Iniettabile?

Grazie

risposta

6

Un componente è iniettabile predefinita @Component() (o @Directive()) comprende @Injectable().

Non aspettatevi di ottenere un'istanza specifica di un componente iniettato. Questo funziona ad esempio con constructor(@Host() private parentComponent) dove la ricerca DI è limitata agli iniettori principali fino all'iniettore dell'elemento host.

Normalmente viene utilizzato il caso DynamicComponentLoader che accetta solo il tipo di componente, non un'istanza. L'iniezione delle dipendenze creerebbe solo un'istanza della classe dei componenti ma non per esempio la vista associata.

+0

Quindi posso inserirlo nel costruttore? – alegrowski

+0

Ho aggiornato la mia risposta. Non penso che l'uso di DI ti comprerà molto per il tuo caso d'uso. –

+0

Gunter, ho sempre avuto l'impressione che l'inserimento di un tipo di componente in un costruttore funzioni solo quando esiste un genitore di quel tipo per il componente che tenta di iniettarlo, nel qual caso l'istanza iniettata è l'istanza del genitore più vicino di quel tipo (e questo serve allo scopo (molto utile) di permettere ai componenti di iniettare genitori digitati arbitrariamente). Questa impressione non è corretta? – drewmoore