Prima che qualcuno segna questo come duplicato si prega di leggere qui di seguito,Creazione di un'istanza di classe in base NomeClasse: stringa
mio scenario non si limita a coinvolgere dattiloscritto ma anche Angular2.
Obiettivo
ho bisogno di un metodo in app.component.ts che prende una stringa (nome classe) e crea un'istanza di questo. Le classi esistono in altri file TS.
Ora per il caso d'uso: Ho un metodo getWidgetObjectFromClassName(className : string) : Object{}
che ha bisogno di restituire le istanze del nome della classe che è in formato stringa. Ora il problema,
Ho provato ad utilizzare NameSpace e facendo let instance = new SampleNS['OtherName']();
(SampleNS è uno spazio dei nomi), funziona perfettamente nel caso di un singolo file.
ma ora ho più file TS consente di dire interfaces.ts, classes.ts, otherclasses.ts. Sto usando export namespace SampleNS{}
in interface.ts tutto funziona, next in classes.ts usando lo /// <reference path="interfaces.ts" />
e lo stesso namespace SampleNS
.
Ora il mio metodo getWidgetObjectFromClassName(className : string) : Object{}
è in xyz.ts, e ora quale importazione dovrei fornire ?, il mio punto è se dico "import {SampleNS} da" ./interfaces ". Il problema qui è che posso solo importare lo spazio dei nomi di un singolo file (anche se è lo stesso) quindi l'istanza di creazione im è limitata all'importazione di quello specifico spazio dei nomi di file.
Plunker linkhttps://plnkr.co/edit/pt90F34KPsGoHDpSUQFD?p=preview
cosa circa la creazione di un file che esporta in tutto il componente, allora avete bisogno di importare solo questo file con un namespace e quindi dovresti essere in grado di riferirti a tutti i componenti allo stesso modo? –
* "Prima che qualcuno segnali questo come duplicato, leggi sotto," * - No, preferisco giudicare se le cose sono duplicate lanciando una moneta. – nnnnnn
ok gunter ... provando la tua soluzione tornerà ... –