Импорт сторонних библиотек в библиотеку Angular дает ошибку

Пытаюсь создать библиотеку с помощью 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
В чем может быть проблема?
заранее спасибо


person Vugar Abdullayev    schedule 14.08.2018    source источник
comment
вам нужно было что-нибудь добавить в package.json для вашей библиотеки? интересно, потому что у меня такая же проблема   -  person shahidfoy    schedule 19.02.2019


Ответы (1)


Включите угловой материал и другие внешние пакеты в ваш ng-package.json файл.

{
  "lib": {
    "entryFile": "public_api.ts",
    "externals": {
      "@angular/material/input": "ng.material.input",
      "@angular/material/select": "ng.material.select"
      .....
    }
  }
}
person Cam Plimsoll    schedule 14.08.2018
comment
Большое спасибо! Это решило проблему. Не могли бы вы сказать мне, где я могу получить информацию об этом? Это сработало, но я понятия не имею, почему сторонние библиотеки импортируются таким образом, особенно угловой материал. - person Vugar Abdullayev; 14.08.2018