Wie konvertiert man einen "String" Wert "Typ" im Winkel 2
Ich möchte erstellen Sie eine Seite im Menü in ionic 2 Anwendung, wo die Seiten-navigation-Komponente platziert wird, in eine externe json-Datei geholt, mit der Hilfe von menuService.getMenu Funktion.
MEIN JSON-Struktur:
"menu":[
{
"title":"Grid",
"component":"GridPage"
}
]
Mein Ts:
this.menuService.getMenu().then((menu) => {
this.menu = menu;
});
openPage(menu) {
console.log("menu", menu.component);
nav.setRoot(menu.component);
}
Console-log druckt den string GridPage. Ich habe versucht zu konvertieren mit Typ als Typ(im Menü.Komponente). Aber mein Ergebnis in der Konsole ist eine Funktion mit anonymen Namen. Mir bitte jemand helfen, wie die json-string umgewandelt-Komponente "Typ" für die navigation zu arbeiten.
Sieht aus wie ein dup von stackoverflow.com/questions/15338610/...
Nein. Ich will GridPage (Menü.Komponente) geladen, wenn nav.setRoot genannt wird. Denn es ist die Art von string, bin ich immer Fehler.
Ich sehe, Sie müssen die Art, nicht zu einer Instanz.
Nein. Ich will GridPage (Menü.Komponente) geladen, wenn nav.setRoot genannt wird. Denn es ist die Art von string, bin ich immer Fehler.
Ich sehe, Sie müssen die Art, nicht zu einer Instanz.
InformationsquelleAutor AishApp | 2016-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es gibt einen Weg, um den Typ einer Klasse von string, aber ich weiß nicht, (ich benutze keine TS). Ein einfacher workaround wäre
erstellen Sie eine map von string zu Typ
dann schau einfach das Typen von bis
Der Nachteil ist, dass Sie brauchen, um wissen alle unterstützten Klassen im Voraus.
InformationsquelleAutor Günter Zöchbauer
Ich weiß nicht, Winkel 2 in die Tiefe, sondern in einer gut strukturierten Anwendung ist es einfach und möglich, erhalten ein Typ mit einem string, wenn wissen Sie den vollständig qualifizierten Namen des angegebenen Typs:
Wenn Sie immer die folgende Fehlermeldung:
... dann müssen Sie die Typumwandlung der vorhergehenden namespace (Objekt). Ich bevorzuge behaupten zu
any
in diesem Fall, denn es ist kürzer als die Definition einer inline-Schnittstelle für einen string-basierten index Unterschrift, und Sie effektiv verlieren Sie keine Typ-Sicherheit:Außerdem, dieser Ansatz funktioniert auch perfekt mit den Modulen:
Es bedeutet, dass
this.app.Components
ist nicht definiert. Dies ist in der Regel verursacht durch Datei-Bestellung Probleme auftreten, wenn Sie kompilieren in eine einzelne Ausgabedatei. Wenn Sie kompilieren, in einer einzigen Ausgabe-Datei haben, versuchen Sie, die Referenz-Pfade für den compiler, um zu wissen, die richtige Datei um. Die Fehlermeldung, die Sie bekommen werden, ist nicht spezifisch für immer Arten von strings.Diese Antwort ist mehr als ein Jahr alt, heutzutage ist es bevorzugt, die Verwendung
obj as Type
statt (weil<Type>obj
ist mehrdeutig.tsx
- Dateien). Ich habe bearbeitet die Antwort entsprechend.Es wäre einfach
(document.getElementById('my-id').getAttribute('custom-attribute') as any) as MyType
oderdocument... as any as MyType
.Perfekt!!! Ich danke dir sehr dafür!!!!!!
InformationsquelleAutor John Weisz