将角导入*到模块声明中

时间:2019-04-18 20:40:44

标签: angular typescript

我有一个文件,其中包含我的所有组件,如下所示:

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]
...

1 个答案:

答案 0 :(得分:0)

尝试将数组扩展为声明:

$SIG{__WARN__}

(代替Object.keys然后进行映射,您也可以简单地使用Object.values)