Reputation: 211
I am working on Angular4 project. I integrated server side rendering following this tutorial. Everything works, except one thing.
I need to change meta tags of page after data will be resolved from API server. I mean resolving like this:
RouterModule.forChild([
{
path: ':id',
component: NewsCardComponent,
resolve: {
card: NewsCardResolver
}
}
])
In current implementation, server sends rendered page without resolving data, resolving request occurs on client.
Can anybody give me advise how to implement behavior, when fetching data occurs on server rendering, before result will be send to client?
Upvotes: 2
Views: 213
Reputation: 1299
I notice you don't have providers for your route, but you are using resolve instead.
So I guess your NewsCardResolver is an @Injectable service which at least implements Resolve like this https://www.codementor.io/max_diachenko/angular-2-route-resolves--typescript-du1089pdm ? or this one https://scotch.io/courses/routing-angular-2-applications/data-and-resolve
@Injectable()
export class MyResolver implements Resolve<class> {
constructor(private service: Service, private router: Router) {}
resolve(route: ActivatedRoute): Promise<Data> { ... }
Finally fetch your data on component init :
ngOnInit() {
this.route.data
.subscribe((data: Data ) => {
let result = data;
});
}
Upvotes: 0