javascript - 动态路径导入 - Angular 组件
问题描述
有没有办法以这样的格式导入组件或任何相关的东西,其中有一个条件决定使用哪一个?
import { environment } from '../../environments/environment';
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
if (environment.envName == 'dev')
import { ListInventoryComponent, ConfirmDeleteDialog } from 'this_local_path';
else
import { ListInventoryComponent, ConfirmDeleteDialog } from 'this_npm_package_path';
我有本地组件和模块,我正在开发和创建 npm 包,但也希望能够在不更改代码中对它的每个引用的情况下测试它们。
解决方案
您不能以这种方式有条件地导入组件。你应该使用的是一个叫做Dynamic imports
.
你可以在这里读更多关于它的内容:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
(此外,互联网上还有许多其他指南)。
一个例子是:
const getDynamicComponent = async (envName) => {
let dynamicComponent;
if (envName === 'dev') {
dynamicComponent = await import('this_local_path');
} else {
dynamicComponent = await import('this_npm_package_path');
}
return dynamicComponent;
}
推荐阅读
- mysql - 试图根据外键查找名称
- c - 1个块中大小为1和XX字节的无效写入/读取肯定会丢失在丢失记录中
- python-3.x - 通过python更新excel文件
- python - 如何从 pandas DataFrame 中提取非 nans
- reactjs - React 随机图像 suffle
- python - 如果标记为已隔离,则跳过 pytest 测试用例
- c# - ASP.NET Web.Debug 和 Web.Release 文件转换
- regex - 为什么我在 PySpark 中的 RegexTokenizer 转换提供了与所需模式相反的模式?
- nested - Kusto 用例(嵌套用户定义函数)
- angular - NGX 图表显示时间线问题。在 Angular 8 版本中使用 ComponentPortal 动态加载组件时