我有一个文件,其中包含我的所有组件,如下所示:
components.ts
export { ComponentA } from '../some/path/a.component';
export { ComponentB } from '../some/path/b.component';
export { ComponentC } from '../some/path/c.component';
// ... more here
在我的模块文件中,有这个:
components.module.ts
import { ComponentA } from '../some/path/components';
import { ComponentB } from '../some/path/components';
import { ComponentC } from '../some/path/components';
// ... more here
@NgModule({
declarations: [ComponentA, ComponentB, ComponentC]
})
export class ComponentsModule { }
有没有一种方法可以只将import * as Components from '../some/path/components'
放入declarations
数组中?我有很多组件,列表可能会变得很大。另外,每次添加新组件时,如果可以将其作为导出文件添加到components.ts
文件中,而import *
会更好,那我就必须更新两个文件。模块中的所有新组件。
如果有人知道,将不胜感激。还是我应该这样做?如果没有,那将是一个好的做法?
我尝试这样做,但是它返回所有组件的构造函数列表,当我尝试构建它时,Angular抱怨说它无法确定每个组件的模块。
import * as exports from '../some/path/components';
const Components: any[] = Object.keys(exports).map(key => exports[key]);
...
delcarations: [Components]
...
答案 0 :(得分:0)
尝试将数组扩展为声明:
$SIG{__WARN__}
(代替Object.keys然后进行映射,您也可以简单地使用Object.values)