问题是由于Angular Universal在服务器端呈现时,在客户端执行后端渲染时未更新动态meta标记和基于API响应的内容而导致的。可以通过以下两种方法解决:
方法1:使用platform-browser-dynamic来呈现您的AppComponent。
import { AppModule } from './app.module';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
方法2:在AppComponent中使用MetaService和TitleService来更新meta和标题标记。
import { Component } from '@angular/core';
import { Meta, Title } from '@angular/platform-browser';
import { ApiService } from './api.service';
@Component({
selector: 'app-component',
templateUrl: './app.component.html'
})
export class AppComponent {
constructor(
private apiService: ApiService,
private meta: Meta,
private title: Title
) {}
ngOnInit() {
this.apiService.getMetaAndTitle().subscribe(
data => {
this.title.setTitle(data.title);
this.meta.updateTag({ name: 'description', content: data.description });
}
);
}
}
这样就可以在Angular Universal之后更新动态meta标记和API响应的内容。