Zanim ktokolwiek oznacza to jako duplikat proszę przeczytać poniżej,Tworzenie instancji klasy na podstawie className: string
Mój scenariusz nie tylko maszynopis, ale również obejmować Angular2.
Cel
muszę metodę w app.component.ts który pobiera ciąg (nazwa klasy) i tworzy instancję tego. Klasy istnieją w innych plikach ts.
teraz do przypadku użycia: Mam metodę getWidgetObjectFromClassName(className : string) : Object{}
który musi powrócić wystąpień nazwy klasy, który jest w formacie strun. Teraz problem,
Próbowałem używać NameSpace i robi let instance = new SampleNS['OtherName']();
(SampleNS to przestrzeń nazw), działa idealnie dobrze w przypadku pojedynczego pliku.
Ale teraz Mam wiele plików ts, powiedzmy, interfejsy.ts, classes.ts, otherclasses.ts. Im przy użyciu export namespace SampleNS{}
w interfejsie.ts wszystkie prace, następnie w classes.ts przy użyciu /// <reference path="interfaces.ts" />
i tej samej przestrzeni nazw SampleNS
.
Teraz moja metoda getWidgetObjectFromClassName(className : string) : Object{}
jest w xyz.ts, a teraz, który import powinienem dać?, Mój punkt jest, gdy mówię `import {SampleNS} z" ./interfaces ". Problem polega na tym, że mogę zaimportować tylko przestrzeń nazw jednego pliku (nawet jeśli jest taka sama), dlatego tworzenie instancji jest ograniczone do importu tej konkretnej przestrzeni nazw plików.
Plunker linkhttps://plnkr.co/edit/pt90F34KPsGoHDpSUQFD?p=preview
Co o stworzenie pliku, który eksportuje swoje składnik, to trzeba po prostu importować ten plik przestrzeń nazw, a następnie powinieneś móc odnosić się do wszystkich składników w ten sam sposób? –
* "Zanim ktokolwiek zaznaczy to jako duplikat, przeczytaj poniżej," * - Nie, wolę ocenić, czy rzeczy są duplikowane przez rzut monetą. – nnnnnn
ok gunter ... wypróbowanie rozwiązania ur będzie odzyskiwać ... –