Я просто пытаюсь вложить компонент внутрь компонента и передать массив как ngFor вложенного компонента. Проблема в том, что массив взят из наблюдаемого, и для вложенного компонента ничего не отображается. Я вижу наблюдаемый возврат в консоли браузера, поэтому я знаю, что все работает до точки рендеринга вложенного компонента. Я знаю, что это как-то связано с рендерингом, происходящим до наблюдаемых возвращаемых данных, но я не смог найти документацию или онлайн-информацию (или вопросы ТАК), которые указали бы мне на то, что мне не хватает.
Вот код..
srv-data.service.ts:
interface IWeek {
id: number;
weeknumofyear: number;
year: number;
holidaymontype: number;
holidaytuetype: number;
holidaywedtype: number;
holidaythutype: number;
holidayfritype: number;
}
@Injectable()
export class SrvDataService {
errorMessage: any;
private _apiUrl = 'http://172.16.194.250:99/api/';
weeks$: Observable<IWeek[]>;
weeks: IWeek[] = [];
constructor(private _http: HttpClient) {
this.getWeeks()
.subscribe(weeks$ => this.weeks = weeks$,
error => this.errorMessage = <any>error);
}
getWeeks(): Observable<IWeek[]> {
return this._http.get<IWeek[]>(this._apiUrl + 'Weeks')
.do(data => console.log('Weeks from getWeeks(): ' + JSON.stringify(data)))
.catch(this.handleError);
}
}
app.component.ts:
import { Component, OnInit } from '@angular/core';
import { SrvDataService } from './services/srv-data.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
})
export class AppComponent {
weeks: IWeek[] = [];
constructor (public dataService: SrvDataService) {
this.weeks = this.dataService.weeks;
}
}
приложение.component.html:
<div>
In app.component {{ weeks }}
<app-week *ngFor="let week of weeks; index as i; first as isFirst" [week]="week"></app-week>
</div>
Любые советы высоко ценится!