Angular 6 с простым TypeScript - ОШИБКА: модуль не имеет экспортированного члена

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

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

Спасибо!

что в ./server-messages.component.html?

peinearydevelopment 01.06.2018 18:44

Пожалуйста, проверьте server-messages.component.ts. Вы ошиблись оператором импорта.

Ritwick Dey 01.06.2018 18:48

@RitwickDey Как? Я, должно быть, слепой.

Isabelle Plante 01.06.2018 19:04

Вы не поделились своим messages.component.ts ... Вы поделились 'ServerMessageComponent.ts' .... Это ваша ошибка в stackoverflow?

Ritwick Dey 01.06.2018 19:07

@RitwickDey упс, я назвал ServerMessageComponent.ts на самом деле server-message-component.ts

Isabelle Plante 01.06.2018 19:08

Неа. Это не дубликат. Это не связано с компонентом или модулем Angular. Она просто использует функцию enum - language.

Ritwick Dey 01.06.2018 19:24

Это действительно сбивает с толку. Можете ли вы сказать мне все имена файлов в projects/framework/src/lib/server-messages/ @IsabellePlante

Ritwick Dey 01.06.2018 19:27

Вы вообще используете перечисление ServerMessageType в своем шаблоне html?

peinearydevelopment 01.06.2018 19:47
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
9
16 998
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

Спасибо! Не могли бы вы пояснить немного лучше на примерах? Не думаю, что понимаю.

Isabelle Plante 01.06.2018 19:04

Это объясняется здесь: stackoverflow.com/questions/41960959/…

Bert Verhees 01.06.2018 19:06

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

Ответ принят как подходящий

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

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

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

Был возвращен к

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

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

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

Другие вопросы по теме