Angular 使用异步导入模块延迟模块声明
我想动态导入第三方模块并检查它。然后,NgModule中的声明取决于它是否存在(真/假)。类似我下面的代码。问题是:动态导入是一种承诺。在导入承诺加载后,我需要NgModule声明。我该怎么解决呢Angular 使用异步导入模块延迟模块声明,angular,asynchronous,import,module,promise,Angular,Asynchronous,Import,Module,Promise,我想动态导入第三方模块并检查它。然后,NgModule中的声明取决于它是否存在(真/假)。类似我下面的代码。问题是:动态导入是一种承诺。在导入承诺加载后,我需要NgModule声明。我该怎么解决呢 let loaded = false; import('ngx-color-picker').then((module) => { console.log(module); loaded = true; }); // => it takes time // the Mo
let loaded = false;
import('ngx-color-picker').then((module) => {
console.log(module);
loaded = true;
}); // => it takes time
// the Module suddenly declaration => i need to delay it somehow and
// runs AFTER the above import Promise has loaded
@NgModule({
declarations: [
loaded ? SmNgxColorPickerComponent : [],
],
imports: [
// --- Angular Base imports ---
CommonModule,
ReactiveFormsModule,
// --- Angular Material imports ---
MatInputModule,
// --- Vendor imports ---
loaded ? ColorPickerModule : [],
],
exports: [
loaded ? SmNgxColorPickerComponent : [],
],
providers: []
})
export class SmNgxColorPickerModule {
}
我不确定这是否可行,为什么你不干脆用路由器懒散地加载这个模块,这样这个库就可以从主捆绑包中分离出来?我真的需要它在NgModule内部检查第三方库/模块是否存在(不在app-routing.module或main app内部),当应用程序只开始运行一次(init)并处理它(就像一个尝试捕捉)我不认为我理解你的需求,为什么你需要检查是否存在第三方库?我试图解释一下,但很抱歉我的英语不好:我建立了自己的库以在公共ng模块中发布。这个库包含更多的模块和一些建立在第三方库上的模块。因此,如果我不想在我的主应用程序中使用来自m的模块我自己的软件包建立在第三方库上,那么我不想在开发节点_模块中下载第三方软件包(如对等依赖)。我自己的模块应该知道它(动态)。我也想要这个解决方案。因为我想在我的登录模块中导入recaptcha模块,但它会根据google insights产生性能问题,所以我希望在延迟一段时间后导入recaptcha模块。可能吗?我不确定这是否可能,为什么不简单地用路由器加载此模块,以便此库与其他模块分离主捆绑包?当应用程序只开始运行一次(init)时,我真的需要它在NgModule内部检查第三方库/模块是否存在(而不是在app-routing.module或主应用中),并处理它(就像动态尝试捕获一样)我不认为我理解你的需求,为什么你需要检查是否存在第三方库?我试图解释一下,但很抱歉我的英语不好:我建立了自己的库以在公共ng模块中发布。这个库包含更多的模块和一些建立在第三方库上的模块。因此,如果我不想在我的主应用程序中使用来自m的模块我自己的软件包建立在第三方库上,那么我不想在开发节点_模块中下载第三方软件包(如对等依赖)。我自己的模块应该知道它(动态)。我也想要这个解决方案。因为我想在我的登录模块中导入recaptcha模块,但它会根据google insights产生性能问题,所以我希望在延迟一段时间后导入recaptcha模块。可能吗?