Наскільки я знаю, є 2 стандартних способи зробити це.
1. @ Введення
Щоразу, коли дані батьків змінюються, дитина отримує про це повідомлення методом ngOnChanges. На це може діяти дитина. Це стандартний спосіб взаємодії з дитиною.
Parent-Component
public inputToChild: Object;
Parent-HTML
<child [data]="inputToChild"> </child>
Child-Component: @Input() data;
ngOnChanges(changes: { [property: string]: SimpleChange }){
// Extract changes to the input property by its name
let change: SimpleChange = changes['data'];
// Whenever the data in the parent changes, this method gets triggered. You
// can act on the changes here. You will have both the previous value and the
// current value here.
}
- Концепція спільного обслуговування
Створення послуги та використання спостережуваного в спільній службі. Дитина підписується на це і кожного разу, коли відбудеться зміна, про це буде повідомлено дитину. Це також популярний метод. Коли ви хочете надіслати щось інше, ніж ті дані, які ви передаєте у якості вхідних даних, це можна використовувати.
SharedService
subject: Subject<Object>;
Parent-Component
constructor(sharedService: SharedService)
this.sharedService.subject.next(data);
Child-Component
constructor(sharedService: SharedService)
this.sharedService.subject.subscribe((data)=>{
// Whenever the parent emits using the next method, you can receive the data
in here and act on it.})