Угловой 6 с простым TypeScript - ОШИБКА: модуль не имеет экспортированного члена - PullRequest
0 голосов
/ 01 июня 2018

У меня есть небольшая библиотека Angular 6, в которой я создаю многократно используемый компонент для отображения сообщений на уровне страницы, таких как ошибки, информация, предупреждения и успех.

Для этого у меня есть enum 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 на строку и полностью уберум перечисление ServerMessageType, все будет хорошо скомпоновано и развернуто.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Вам необходимо импортировать ваш компонент в корневой модуль, и когда вы создаете сервис, чем сделать его @Injectable, чем использовать.

0 голосов
/ 05 июня 2018

Глупая ошибка!

В server-messages.component.ts эти две строки:

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

были возвращены в

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

Спасибо за вашеПомогите!Не удалось найти ServerMessageType в ServerMessage.ts , поскольку он экспортирован в ServerMessageType.ts ...

Спасибо всем за помощь!

0 голосов
/ 01 июня 2018

Вам необходимо явно экспортировать компонент из модуля, если вы хотите импортировать этот компонент путем импорта этого модуля.

Код, в котором вы должны решить эту проблему, - это код модуля, из которого вы хотитеэкспортировать этот компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...