从Angular模块导出Typescript接口

从Angular模块导出Typescript接口

问题描述:

我有一个Typescript接口IBreadcrumbNavigation我正在导出。我可以在一个角组件中使用它import { IBreadcrumbNavigation } from 'app/shared/interfaces/breadcrumbNavigation';从Angular模块导出Typescript接口

但是,组件的模块已经导入了一个SharedModule。我想将IBreadcrumbNavigation接口放在SharedModule中,这样我就不需要将它明确地导入到每个想要使用它的组件中。

在我SharedModule我有

import { IBreadcrumbNavigation } from './interfaces/breadcrumbNavigation'; 

@NgModule({ 
    declarations: [ 
     IBreadcrumbNavigation 
    ], 
    exports: [ 
     IBreadcrumbNavigation 
    ] 
}) 
export class SharedModule { }; 

打字稿给出了错误“‘IBreadcrumbNavigation’仅是指一类,但这里正在使用的值。”

如果我将IBreadcrumbNavigation从接口更改为类,错误消失。

是否有很好的解决办法,或者我只是需要直接将接口直接导入到每个组件?

+0

我们可以看到,部件模块 –

是否有一个良好的修复此,

一样的错误信息说,接口不实际声明任何存在于运行。它们纯粹在编译时存在于TypeScript中,并被删除。所以将它们放在装饰器的数组中是没有意义的,因为在运行时存在那些

听起来像转换到一个类是什么可以解决它,但很可能你应该导出这些接口的具体实现者。

From the docs

添加declarable类 - 组件,指令和管道 -declarations列表。

声明这些类在正好应用程序的一个模块。如果他们属于这个模块,将它们声明在这个模块中。


做我只是需要明确地直接导入接口为每个组件?

您确实需要这样做 - 请记住,NgModule不会为您自动导入其他ECMAScript/TypeScript模块。在模板之外,你必须自己处理这个问题。

如果它不是一个组件,管道,指令,模块,那么只需要将模块中的接口导入到所需的模块中。必须导出接口

in'。/接口/ breadcrumbNavigation';

export interface IBreadcrumbNavigation { 
    ... 
} 

在其他模块x分量只导入接口

import { IBreadcrumbNavigation } from 'pathToOtherModule/interfaces/breadcrumbNavigation';