Reputation: 2075
Trying to create library using ng-packagr.
Inside project I run :
ng g library nt-select --prefix nt
inside 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() {
}
}
and 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 { }
The problem is nt-select emits error cannot find name of mat-form-field, mat-select, ngx-mat-select-search even though I imported all modules.
Following tutorial on : https://blog.angularindepth.com/creating-a-library-in-angular-6-87799552e7e5
What might be issue ?
thanks in advance
Upvotes: 3
Views: 1503
Reputation: 270
Include angular material and other external packages in your ng-package.json
file
{
"lib": {
"entryFile": "public_api.ts",
"externals": {
"@angular/material/input": "ng.material.input",
"@angular/material/select": "ng.material.select"
.....
}
}
}
Upvotes: 2