Meskipun ada kerumitan yang terlibat, Anda bisa mencobanya. Tergantung pada basis kode Anda, saya kira. Router memperlihatkan properti config
, menyimpan konfigurasi saat ini, dan metode resetConfig(routes: Routes)
untuk mengatur ulang konfigurasi. Anda dapat memulai dari sana, dan menambahkan, katakanlah, komponen dengan cepat.
Namun, komponennya harus dapat dijangkau. Mungkin dibuat secara dinamis, seperti yang disebutkan dalam jawaban lain. Atau, konfigurasi Anda dapat menyertakan sesuatu seperti ini:
constructor(private router: Router) {}
private addPlugin(routePath, pluginName, pluginPath) {
const currentConfig = this.router.config;
currentConfig.push({
path: routePath,
loadChildren: `precompiled-modules/${pluginPath}#${pluginName}`,
});
this.router.resetConfig(currentConfig);
}
Anda harus mendapatkan pluginPath dan pluginName entah bagaimana - mungkin menghitungnya berdasarkan konvensi, mungkin pembantu backend kecil yang mendapatkan ini, mungkin arraynya sudah dikonfigurasikan sebelumnya dan sudah dimuat atau serupa. Saya juga berasumsi Anda akan memiliki sistem pengujian yang sangat bagus, untuk memastikan plugin Anda "kompatibel". Dan terakhir, ajari webpack/systemjs cara menyiapkan modul. Secara keseluruhan, hal ini bukannya tidak mungkin, namun memerlukan beberapa landasan.
Meski begitu, Angular 6 sudah dekat, dan bersamaan dengan itu, Angular Elements. Elemen akan menyediakan cara untuk mengkompilasi modul Anda sebagai komponen web dan "mengekspornya", sehingga dapat digunakan di mana saja (tidak harus di aplikasi Angular). Pikirkan plugin jQuery - ada basis jQuery.min.js
yang perlu Anda muat, tetapi selain itu Anda tidak memikirkannya lagi, Anda cukup menggunakan elemen baru Anda. Ini mirip dengan Angular Elements - Anda mengekspor apa yang pada dasarnya merupakan komponen Web. Ada bagian "loader" (setara dengan jquery.min.js), dan bundel Elemen Anda. Namun komponen Anda hanyalah simpul HTML lainnya, dengan properti, atribut, pengikatan, peristiwa, Anda tidak peduli lagi, sama seperti Anda tidak peduli dengan input.
Mungkin layak untuk ditunggu, lihat dan putuskan sendiri.
person
Zlatko
schedule
19.02.2018