Как экспортировать модели из библиотек в Angular? - PullRequest
0 голосов
/ 26 декабря 2018

Я создал библиотеку Angular, но я хочу экспортировать модель, которую моё приложение может использовать.Как я могу это сделать?

Например:

my-library

library-model.ts

export class LibraryModel{
  //some model data
}

my-library.component.ts

import { Component, OnInit, Input } from '@angular/core';

//some imports    

@Component( {
    selector: '...',
    templateUrl: '...',
    styleUrls: [...]
} )
export class MyLibraryComponent implements OnInit {

    @Input() libInputData: LibraryModel;

    // some other codes
}

my-library.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { MyLibraryComponent} from './my-library.component';
import { LibraryModel} from './library-model';

@NgModule( {
    declarations: [MyLibraryComponent, LibraryModel],
    imports: [
        BrowserModule
    ],
    exports: [MyLibraryComponent, LibraryModel]
} )
export class MyLibraryModule { }

public_api.ts

export * from './lib/my-library.service';
export * from './lib/my-library.component';
export * from './lib/my-library.module';
export * from './lib/library-model';

my-app

app.component.ts

import { Component } from '@angular/core';
import { LibraryModel } from 'my-library';

@Component({
  selector: 'grc-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'my-application';

  libraryModel : LibraryModel ;

  initializeData() {

     //initialize and set data for libraryModel 

  }
}

app.component.html

<my-lib-component libInputData="libraryModel" ></my-lib-component>

Однако с этой настройкой я получаю «Can»t экспортировать значение LibraryModel ... "ошибка при сборке библиотеки.Я хотел использовать LibraryModel, чтобы я мог легко передать данные в app.component.html.Как мне этого добиться?

1 Ответ

0 голосов
/ 26 декабря 2018

Вы не можете объявить / экспортировать его , это модель, простой неугловой класс не component, удалите его из обоих массивов (declarations & exports).Он уже экспортирован export class LibraryModel.

Не объявляйте следующее:

  • Класс, который уже объявлен в другом NgModule
  • Массив директив, импортированных из другого пакета.Например, не объявляйте FORMS_DIRECTIVES из @ angular / forms
  • NgModule классов
  • Сервисные классы
  • Неангулярные классы и объекты, такие как строки, числа, функции,модели сущностей, конфигурации, бизнес-логика и вспомогательные классы

MDN.

Донне объявляю (Официальный документ) .

...