В зависимости от того, где вы хотите определить переменную, вы можете использовать @Input или @Output из Angular директив. Вы также можете комбинировать их.
Ознакомьтесь с документацией здесь: https://angular.io/guide/template-syntax#inputs -выходы
@ Input
Использование Ввод для передачи переменной дочернему компоненту. Дочерний компонент может изменять переменную, и изменения обратно распространяются на родительский.
Дочерний компонент:
import { Component, Input } from '@angular/core'; // First, import Input
export class ItemDetailComponent {
@Input() item: string; // decorate the property with @Input()
}
Дочерний шаблон:
<p>
Today's item: {{item}}
</p>
Родительский шаблон:
<app-item-detail [item]="currentItem"></app-item-detail>
Родительский компонент:
export class AppComponent {
currentItem = 'Television';
}
@ Output
Output генерирует событие от дочернего элемента, на которое родитель может установить слушателя. Вы можете использовать его для отслеживания любых изменений в переменной.
Дочерний компонент
export class ItemOutputComponent {
@Output() newItemEvent = new EventEmitter<string>();
addNewItem(value: string) {
this.newItemEvent.emit(value);
}
}
Дочерний шаблон:
<label>Add an item: <input #newItem></label>
<button (click)="addNewItem(newItem.value)">Add to parent's list</button>
Родительский шаблон:
<app-item-output (newItemEvent)="addItem($event)"></app-item-output>
Родительский компонент:
export class AppComponent {
items = ['item1', 'item2', 'item3', 'item4'];
addItem(newItem: string) {
this.items.push(newItem);
}
}