Я хочу использовать SSR для улучшения поисковой оптимизации моего углового одностраничного приложения. Я включил SSR с помощью Angular-Universal, который работает для обслуживания статического html, но мои компоненты в значительной степени полагаются на асинхронные вызовы API для создания контента на странице. См. пример ниже, где $obs
инициализируется в функции ngOnInit
, а затем используется с каналом async
в html для извлечения данных. Проблема, с которой я сталкиваюсь, заключается в том, что статический html, обслуживаемый SSR, не включает ничего, что использует канал async
, эти вызовы выполняются на стороне клиента, а затем загружается содержимое. Это не то, что я хочу, потому что мне нужен контент из вызова API для создания метатегов. Можно ли заставить angular universal ждать завершения вызова API, отображать html с этими данными, а затем обслуживать статический html?
@Component({
selector: 'app-example-component',
template: `
<div *ngIf="(obs$ | async) as model">
{{model.title}}
</div>
`
})
export class ExampleComponent implements OnInit {
obs$: Observable<SomeModel>;
constructor(private exampleHttpService: ExampleHttpService) {}
ngOnInit() {
this.obs$ = this.exampleHttpService.doSomeApiCall();
}
}
Я хочу, чтобы SSR отображал шаблон html с заголовком из вызова API, а затем обслуживал этот статический html.