@Pasler

AngularJS6 Как передать данные из родительского компонента в дочерний без обратной связи?

Проблема в следующем.
Родительский компонент запрашивает данные с сервера и передаёт их в дочернии.
Шаблон:


Определение списка:
export class ParentComponent implements OnInit, OnDestroy {
private fullList: any = [];
getFullList() {
return this.fullList;
}

Определние в дочернем компоненте:
export class ChildComponent implements OnInit, OnChanges {
@Input() myList: any;

Проблема в том, что при изменении полей в одном из дочерних компонентов, данные меняются и других. Можно ли как-то отвязать эту зависимость?

@angular/cli 7.0.6
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 2
mazhekin
@mazhekin
Frontend, Backend Web Developer
getFullList() {
return [...this.fullList];
}
Ответ написан
А что вы потом делаете с этими измененными данными? Ну то есть зачем вы вообще в дочернем компоненте меняете данные которые используются в родительском?
Это противоречит однонаправленному потоку данных. Если вы хотите в дочернем компоненте менять данные которые вы передаете через @Input() и потом эти измененные данные использовать в родительском компоненте, то вам нужно определить для дочерних компонентов @Output() и тригерить событие на дочернем элементе когда вы поменяли данные. При этом передавать в event копию объекта с данными. В родительском компоненте соответственно слушать событие изменения данных на дочерних компонентах и получать обновленные данные.
Такое решение предпочтительнее в рамках ангуляра, нежели изменять объект по ссылке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы