Почему subscribe() не видит nativeElement?
Потому что на момент выполнения кода в subscribe(), элемента с id=graph еще не существует. *ngIf отрисует этот элемент не мгновенно после this.trainings = trainings, а только после выполнения функции subscribe().
Для того чтоб код не имел неприятного запаха из-за setTimeout(), можно передавать trainings в GraphComponent извне. Тогда это будет выглядеть как-то так:<app-graph  [trainings]="trainings" *ngIf="trainings.length"></app-graph>
Ваш graph еще не успевает появиться, а Вы уже пытаетесь к нему обратиться
Как вариант: пример