使用普通TypeScript的Angular 6 - 错误:模块没有导出的成员

时间:2018-06-01 16:35:33

标签: angular typescript enums

我有一个小的Angular 6库,我正在构建一个可重用的组件来显示页面级别的消息,例如错误,信息,警告和成功。

为此,我有一个枚举cursor:pointer;,这很简单:

ServerMessageType.ts

export enum ServerMessageType { Error = 'error', Info = 'info', Success = 'success', Warning = 'warning' } 应使用ServerMessage.ts

ServerMessageType

import { ServerMessageType } from './ServerMessageType'; export class ServerMessage { constructor(public type: ServerMessageType, public messageText: string, public dismissible?: boolean, public id?: string) { } }

server-messages.component.ts

但是,当我运行import { Component, EventEmitter, Input, Output } from '@angular/core'; import { ServerMessage } from './ServerMessage'; import { ServerMessageType } from './ServerMessageType'; @Component({ selector: 'app-server-messages', templateUrl: './server-messages.component.html', styleUrls: [] }) export class ServerMessagesComponent { @Input() messages: ServerMessage[]; @Output() messageRemoved = new EventEmitter<ServerMessage>(); constructor() { } clearMessage = function (index: number) { const message = this.messages[ index ]; this.messageRemoved.emit(message); this.messages.splice(index, 1); }; getMessageClass(message: ServerMessage): string { switch (message.type) { case ServerMessageType.Error: return 'alert-danger'; case ServerMessageType.Info: return 'alert-info'; case ServerMessageType.Success: return 'alert-success'; case ServerMessageType.Warning: return 'alert-warning'; } } isDismissible(message: ServerMessage): boolean { return message.dismissible === true; } } 时,出现错误:

ng build

我做错了什么?如果我将BUILD ERROR > projects/framework/src/lib/server-messages/server-messages.component.ts(3,28): > error TS2305: Module > '"/Users/xxx/dev/apps/framework/projects/framework/src/lib/server-messages/ServerMessage"' > has no exported member 'ServerMessageType' 中的type更改为字符串并完全删除ServerMessage枚举,那么构建和部署就可以了。

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要在根模块中导入组件,并在进行服务时将其导入@Injectable而不是使用。

答案 1 :(得分:1)

如果要通过导入该模块导入该组件,则需要从模块中显式导出组件。

您必须解决此问题的代码是您要从中导出该组件的模块代码。

答案 2 :(得分:0)

愚蠢的错误!

server-messages.component.ts 中,这两行:

import { ServerMessage } from './ServerMessage';
import { ServerMessageType } from './ServerMessageType';

已被还原为

import { ServerMessage, ServerMessageType } from './ServerMessage';

感谢您的帮助!它无法在 ServerMessage.ts 中找到ServerMessageType,因为它在 ServerMessageType.ts 中导出...

感谢大家的帮助!