/
githubmirror
/
components
Обзор
Документация
Войти
/
githubmirror
/
components
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/components-examples/material/chips/chips-input/chips-input-example.ts
71 строка
2 KB
Kristiyan Kostadinov
docs: remove OnPush from examples
18 май 2026, 10:44
18 май 2026, 10:44
8bc245b
Код
Авторство
О чём код?
import {LiveAnnouncer} from '@angular/cdk/a11y'; import {COMMA, ENTER} from '@angular/cdk/keycodes'; import {Component, inject, signal} from '@angular/core'; import {MatChipEditedEvent, MatChipInputEvent, MatChipsModule} from '@angular/material/chips'; import {MatFormFieldModule} from '@angular/material/form-field'; import {MatIconModule} from '@angular/material/icon'; export interface Fruit { name: string; } /** * @title Chips with input */ @Component({ selector: 'chips-input-example', templateUrl: 'chips-input-example.html', styleUrl: 'chips-input-example.css', imports: [MatFormFieldModule, MatChipsModule, MatIconModule], }) export class ChipsInputExample { readonly addOnBlur = true; readonly separatorKeysCodes = [ENTER, COMMA] as const; readonly fruits = signal<Fruit[]>([{name: 'Lemon'}, {name: 'Lime'}, {name: 'Apple'}]); readonly announcer = inject(LiveAnnouncer); add(event: MatChipInputEvent): void { const value = (event.value || '').trim(); // Add our fruit if (value) { this.fruits.update(fruits => [...fruits, {name: value}]); } // Clear the input value event.chipInput!.clear(); } remove(fruit: Fruit): void { this.fruits.update(fruits => { const index = fruits.indexOf(fruit); if (index < 0) { return fruits; } fruits.splice(index, 1); this.announcer.announce(`Removed ${fruit.name}`); return [...fruits]; }); } edit(fruit: Fruit, event: MatChipEditedEvent) { const value = event.value.trim(); // Remove fruit if it no longer has a name if (!value) { this.remove(fruit); return; } // Edit existing fruit this.fruits.update(fruits => { const index = fruits.indexOf(fruit); if (index >= 0) { fruits[index].name = value; return [...fruits]; } return fruits; }); } }