Ich baue ein cms, wo ein Benutzer auswählen kann, welche Seiten zu verwenden sind. Wenn der Benutzer also eine Kontaktseite möchte, wählt er sie aus und füllt sie mit Inhalt aus, und ihre Site würde beispielsweise eine contact
Route haben. Auf dieser Grundlage ist es möglich, Routen in eckigen dynamisch hinzuzufügen, basierend darauf, ob ein Benutzer eine bestimmte Seite möchte oder nicht?
Ja. Es gibt mehrere Möglichkeiten, um das zu erreichen, was Sie wollen. Sie können router.resetConfig
verwenden, um die Konfiguration des Routers mit einer neuen Konfiguration zurückzusetzen:
Sie können auch push
routes auf die config:
Ein anderer Weg, den ich hier gemacht habe, ist, dass Benutzer Seiten mit etwas wie TinyMCE erstellen und den URL-Pfad angeben können, den die Seite haben soll. In Angular habe ich eine Wildcard-Route im Router mit { path: '**', component: ComponentBuilder }
angegeben, wobei die ComponentBuilder-Komponente die Vorlage aus der Datenbank abruft, die dem angeforderten Pfad entspricht, und dann die Komponente dynamisch mit der Vorlage generiert. Wenn eine Vorlage in der Datenbank nicht vorhanden war, wurde eine normale Page cannot be found
Vorlage gerendert.
Beide Wege funktionieren. Es kommt darauf an, wie Ihre Anwendung funktionieren soll und wie Sie die Seiten erstellen, die Benutzer erstellen.
Es gibt eine Menge mehr Dokumentation und Beispiele zum Erstellen dynamischer Komponenten seit der Lösung, die ich in Version 2 rc4 entwickelt habe. Ich habe keines davon benutzt, aber es sieht hilfreich aus:
NPM-Paket für dynamische Komponenten
Angular Docs beim Laden dynamischer Komponenten
Komponenten dynamisch erstellen
Ein weiterer Artikel zum dynamischen Erstellen von Komponenten
Tags und Links angular