Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 使用异步导入模块延迟模块声明_Angular_Asynchronous_Import_Module_Promise - Fatal编程技术网

Angular 使用异步导入模块延迟模块声明

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

我想动态导入第三方模块并检查它。然后,NgModule中的声明取决于它是否存在(真/假)。类似我下面的代码。问题是:动态导入是一种承诺。在导入承诺加载后,我需要NgModule声明。我该怎么解决呢

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模块。可能吗?