将第三方库导入Angular Library会出错

时间:2018-08-14 13:45:37

标签: angular typescript angular-library

尝试使用ng-packagr创建库。

我运行的内部项目:

ng g库nt-select --prefix nt

在nt-select.component.ts内部

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

@Component({
  selector: 'nt-nt-select',
  template: `
    <mat-form-field>
      <mat-select [placeholder]="placeholder" [disabled]="disabled" [multiple]="multiple" [(ngModel)]="value"
                  [required]="required">

        <ngx-mat-select-search *ngIf="searchable"
                               [formControl]="optionFilterCtrl"
                               [placeholderLabel]="'Axtar'"
                               [noEntriesFoundLabel]="'Tapılmadı'"
                               [clearSearchInput]="false"
        ></ngx-mat-select-search>
        <mat-option *ngFor="let opt of filteredOptions$ | async" [value]="opt.value">
          {{opt.label}}
        </mat-option>
      </mat-select>

      <mat-error>{{getErrors('hobbies')}}</mat-error>
    </mat-form-field>

  `,
  styles: []
})
export class NtSelectComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

和nt.select.module:

import { NgModule } from '@angular/core';
import { NtSelectComponent } from './nt-select.component';
import {CommonModule} from '@angular/common';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {MatSelectModule} from '@angular/material';
import {NgxMatSelectSearchModule} from 'ngx-mat-select-search';

@NgModule({
  imports: [
    CommonModule,
    BrowserAnimationsModule,
    MatSelectModule,
    NgxMatSelectSearchModule,
    ReactiveFormsModule,
    FormsModule
  ],
  declarations: [NtSelectComponent],
  exports: [NtSelectComponent]
})
export class NtSelectModule { }

问题是nt-select发出错误,即使我导入了所有模块,也找不到 mat-form-field,mat-select,ngx-mat-select-search 的名称。
关注以下教程:https://blog.angularindepth.com/creating-a-library-in-angular-6-87799552e7e5
可能是什么问题?
预先感谢

1 个答案:

答案 0 :(得分:2)

ng-package.json文件中包含角形材料和其他外部包装

{
  "lib": {
    "entryFile": "public_api.ts",
    "externals": {
      "@angular/material/input": "ng.material.input",
      "@angular/material/select": "ng.material.select"
      .....
    }
  }
}