如何从 Angular 的库中导出模型?

psi*_*ros 8 angular angular-library

我创建了一个 Angular 库,但我想导出一个我的应用程序可以使用的模型。我怎样才能做到这一点 ?

例如 :

我的图书馆

库-model.ts

export class LibraryModel{
  //some model data
}
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

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 { }
Run Code Online (Sandbox Code Playgroud)

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';
Run Code Online (Sandbox Code Playgroud)

我的应用程序

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 

  }
}
Run Code Online (Sandbox Code Playgroud)

应用程序组件.html

<my-lib-component libInputData="libraryModel" ></my-lib-component>
Run Code Online (Sandbox Code Playgroud)

但是,使用此设置,在构建库期间出现“无法导出值 LibraryModel ...”错误。我想使用 LibraryModel 以便我可以轻松地在 app.component.html 中传递数据。我怎样才能做到这一点?

sel*_* mn 4

您无法声明/导出它,它是一个模型,简单的非角度类而不是component,将其从两个数组中删除(declarationsexports)。它已经由 导出export class LibraryModel

不要声明以下内容:

  • 已在另一个 NgModule 中声明的类
  • 从另一个包导入的指令数组。例如,不要从 @angular/forms 声明 FORMS_DIRECTIVES
  • NgModule 类
  • 服务等级
  • 非 Angular 类和对象,例如字符串、数字、函数、实体模型、配置、业务逻辑和帮助程序类

MDN。

不要声明(官方文档)

  • 为了澄清答案,您确实需要像操作一样将其添加到 public_api.ts 中。 (15认同)