有角度的通用动态标题
我有一个使用角度通用的网站。 为了改善我的网站的搜索引擎优化,我希望通过API动态下载我的网页的标题。
问题是我的请求AJAX在服务器渲染后工作。
这是我的组件的代码:
this.seoService.getSeo(this.subdomain).subscribe(
seo => {
this.seo = seo;
this.titleService.setTitle(this.seo.menu_title );
this.metaService.addTag({name: 'description', content: this.seo.menu_description});
}
);
以下是我的服务代码:
getSeo (subdomain){
return this.http.get('https://url/api/'+ subdomain + '/seo')
.map((response: Response) => {
return response.json();
});
}
我无法完全理解您的问题,但您可以使用isPlatformServer和isPlatformBrowser方法分别在服务器端或客户端执行特定任务。
在服务调用api时,在角度通用中,api会在服务器端呈现中被命中两次,甚至在客户端浏览器中,您可以使用TransferState方法最小化服务器端的调用并在数据进入浏览器之前获取数据。
你的代码的工作可以。
1)在类之前为你的标题创建一个masterStateKey,并在你的构造函数中创建一个私有的transferstate变量。
2)使用masterstatekey调用api,以便它仅在服务器端命中,并使用isPlatformServer方法初始化标题变量。
例:-
const RESULT_KEY = makeStateKey('result');
ngOnInit() {
this.test = this.state.get(RESULT_KEY, null as any);
if (!this.test) {
this.http.get('http://127.0.0.1:8080/api/test')
.subscribe( result => {
this.test = result;
this.state.set(RESULT_KEY, result);
});
}
console.log(this.test);
}
链接地址: http://www.djcxy.com/p/31307.html