ngx-mat-tag-input
Version:
Angular tags-input based on Material Angular
112 lines (85 loc) • 4.42 kB
Markdown
# NgxMatTagInput
Angular tags input based on [Angular Material](https://material.angular.io) auto-complete and chips.
* Library location : `projects/ngx-mat-tag-input` directory of this repository.
* Working example location : `projects/demo` directory of this repository.
## Demo
* Working example location : `projects/demo` directory of this repository.
* [Stackblitz](https://stackblitz.com/@adnanelamghari)
## Installation
`npm i ngx-mat-tag-input`
## API
`import { NgxMatTagInputModule } from 'ngx-mat-tag-input'
`<br>
`selector: ngx-mat-tag-input`
### @Inputs()
| Input | Type | Required | Description |
| --------------------- | ---------------------- | ------------------------ | ------------------------------------------------------------ |
| items | array | Optional | Array of the auto-complete items |
| selectedTags | array | Optional | Array of the selected items bu default |
| appearance | MatFormFieldAppearance | Optional | The form-field appearance style. |
| readonly | boolean | Optional, default: false | Whether the element is readonly. |
| placeholder | string | Optional | The placeholder for this control. |
| displayBy | string | Optional | Attribute's name to display when items are Objects |
| isLoading | boolean | Optional, default: false | When true, a spinner with be displayed in the suggested list |
### @Outputs()
| Output | Description |
| ---------------- | ---------------------------------------------------------------- |
| reset | Emits when when the user resets a form. |
| ngModelChange | Emits when when the view model updates. |
| change | Emits when the contents of the input have changed. |
| select | Emits when the an item from the auto-complete list is selected. |
| focus | Emits when the input receives focus. |
| touched | Emits when the user touches the input. |
## Usage
1) Import the `NgxMatTagInputModule` in your app module.
> `import { NgxMatTagInputModule } from 'ngx-mat-tag-input'`
```typescript
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {AppRoutingModule} from './app-routing.module';
import {AppComponent} from './app.component';
import {NgxMatTagInputModule} from 'ngx-mat-tag-input';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
AppRoutingModule,
NgxMatTagInputModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
```
2) Use the input `(NgxMatTagInput)` in your component.
```typescript
import {Component} from '@angular/core';
@Component({
selector: 'app-root',
template: `
<div class="container">
<h3>NgxMatTagInput</h3>
<ngx-mat-tag-input #aa (change)="change($event)"
[items]="autoCompleteTags" [selectedTags]="selectedValues" appearance="outline"
placeholder="Search Javascript framework"></ngx-mat-tag-input>
</div>
`,
styleUrls: ['./app.component.scss']
})
export class AppComponent {
public autoCompleteTags = ['Angular', 'React', 'VueJs', 'Meteor', 'Ember.js', 'Aurelia', 'Backbone.js'];
public selectedValues = ['Angular'];
change($event) {
console.log($event)
}
}
```
## Build
Run `ng build ngx-mat-tag-input` to build the library. The build artifacts will be stored in the `dist/ngx-mat-tag-input` directory. Use the `--prod` flag for a production build.
## Running unit tests
Run `ng test ngx-mat-tag-input` to execute the unit tests via [Karma](https://karma-runner.github.io).