Привет всем!
Код работает, но не понимаю почему, по всем докам и курсам он вроде как работать не должен.
Есть родительский компонент - большая форма. В родительском компоненте реализована работа с сервисами: загрузка обновление и удаление данных.
Поскольку форма ну очень большая, разбиваем ее на независимые компоненты. вот есть один потомок:
<app-safety
[(SafetyIncidents)] = "SafetyIncidents"
[incidentLevels]="incidentLevels"
[viewType]="viewType"
[(IncidentsToDelete)]="safetyIncidentsToDelete"
(ready)="ready($event,'SafetyBlock')">
</app-safety>
SafetyIncidents это массив
Array<SafetyIncident>.
Внутри компонента потомка (safety) выводим строки для каждого элемента.(решили не делать еще один компонент)
*ngFor="let Incident of SafetyIncidents; let index = index"
и для каждого элемента формы связываем примерно как тут:
<mat-form-field class="col-md-1">
<input name=SafetyIncidentImpactId [(ngModel)]="Incident.ImpactId" matInput placeholder="Impact ID">
</mat-form-field>
...
<mat-select [(value)]="Incident.IncidentLevel" [compareWith]="compareObjects">
<mat-option>--</mat-option>
<mat-option *ngFor="let level of incidentLevels" [value]="level">{{level.Title}}</mat-option>
</mat-select>
Кнопка сабмит и вызов функции сохранения данных в базу находится в родительском компоненте
я закомментировал строчку
//@Output() SafetyIncedentsChange = new EventEmitter<SafetyIncident[]>();
И вообще еще не успел вызвать в коде дочернего компонента
SafetyIncedentsChange.emit(SafetyIncidents);
Но в родительском компоненте все изменения есть и прекрасно сохраняются в базу.
Почему это работает ???
Другой компонент, которому я передаю в качестве @Input простой объект не обновляется без вызова события!