Добрый день!
Разбираюсь с чужим кодом на Angular 7. Пытаюсь составить список того что должно быть включено в рефакторинг.
Но хотя у меня довольно большой опыт программирования, c Angular начал работать совсем недавно, поэтому прошу совета.
Есть родительский компонент DataInputFormComponent в нем вызывается
<app-safety *ngFor="let safetySection of somthing; index as i" [incident]="Levels"
[viewType]="viewType" [index]="i" [componentCount]="something.length" [selectedIncidentLevel]=""></app-safety>
То что передать формирование списка строк надо уже в самом компоненте, я понимаю, но меня интересует то как данные возвращаются из компонента.
В конструкторе SafetyComponent есть следующий код:
constructor(dataInputForm: DataInputFormComponent) {
this.dataInputForm = dataInputForm;
}
Т.е. мы получаем ссылку на родительский компонент, и когда в данном компоненте нажимаем кнопку добавить еще одну запись, в обработчике событий мы вызываем функцию по добавлению из родительского компонента
addSafetySection() {
this.dataInputForm.addSafetySection();
}
removeSafetySection(i: number) {
console.log('removing safety section with index- ', i);
this.dataInputForm.removeSafetySection(i);
}
Таким образом компонент фактически не изолирован от родительского компонента, передает данные вверх по дереву не с помощью
@Output
событий (их в safety компоненте нет вообще), а благодаря ссылке на родительский компонент.
На мой взгляд это ужасно, но может быть я чего то не понимаю, народ тут гордится этим решением, и поскольку я в компании новенький, буду благодарен за отзывы, необходимо ли такой код рефакторить или это допустимая в Angular практика