Il mio costruttore ha parametri opzionali e sembrano confondere il modo predominante di fare DI.Costruttore angolare 2 DI con parametri opzionali
constructor(public name:string, public age?:number, private _service:Service);
tipografico comprensibilmente non piace che metto un parametro non facoltativo dietro una opzionale, inoltre, il servizio non venga iniettato quando il parametro opzionale non è impostato. Come lo risolvo? Non riesco a metterlo da qualche altra parte nel costruttore dal momento che sarei in attesa di impostare il servizio manualmente.
C'è qualcosa come l'iniezione di campo?
@Inject() private _service:Service;
constructor(public name:string, public age?:number);
Devo sostituire i parametri opzionali con i valori predefiniti? Qualche altro suggerimento?
grazie
Modifica Come discusso in seguito, ho cercato di iniettare un servizio in un oggetto che non è creato da DI di angolare. Questo non funziona. Poiché non riesco a creare questa classe (modello) utilizzando DI, ora il servizio viene passato manualmente dalla classe che crea un'istanza di questi oggetti.
io possa mancare qualcosa, ma " età "non è la cosa che voglio essere iniettato. Creo un nuovo oggetto usando il costruttore come 'new Person (" Mike ", 32);' e il 'Service' dovrebbe essere iniettato indipendentemente dall'impostazione dell'età o meno. O devo semplicemente annotare ogni facoltativo (TS =?) Con @Optional()? – KenavR
Non sono sicuro di comprendere appieno la tua domanda. Con 'new Person (" Mike ", 32)' non vi è alcuna iniezione di dipendenza coinvolta. DI è coinvolto solo quando le istanze vengono create da DI stesso. Ad esempio, i componenti e le relative dipendenze sono istanziati da DI. Puoi chiarire per favore? –
"DI è coinvolto solo quando le istanze vengono create da DI stesso." Immagino che sia il mio "problema" o cosa che non ho capito. Creo gli oggetti manualmente impostando il nome e l'età usando il costruttore. Pensavo che il DI avrebbe iniettato gli altri parametri con un provider registrato. Indovina che non funziona. – KenavR