我正在使用Wordpress WP API将数据解析到我的Angular2应用程序中。
我需要获取数据来填充我的页面,我需要根据ActivatedRoute获取页面SLUG。但是,我不知道如何实现这一目标。在“项目”页面中,我需要有页面数据。
这是我的页面数据的Json示例:
[{
"id":16,
"date":"2015-06-24T11:44:03",
"slug":"projects",
"type":"page",
"title":{"rendered":"Projects"}
}]
首先,我创建了一个页面服务:
@Injectable()
export class PageService {
constructor(private http: Http) {}
getPage(slug): Observable<Page> {
return this.http
.get(`${PROJECT_API}pages?slug=${slug}`)
.map((res: Response) => res.json());
}
}
然后,在我的app.component中,我尝试获取激活的路由参数,将SLUG从我的服务解析为getPage函数:
export class AppComponent implements OnInit {
page: Page[]; // Interface of Page
constructor(
private router: Router,
private activatedRoute: ActivatedRoute,
private pageService: PageService
) {}
ngOnInit() {
this.activatedRoute.params
.switchMap((data: Page) => this.pageService.getPage(data.slug))
.subscribe((data: Page) => {
console.log(data[0])
this.page = data[0]
});
}
}
在我的控制台中,我得到“未定义”。
我希望每个页面从ActivatedRoute动态获取页面SLUG并获取数据以填充每个页面。
对于每个页面(组件模板),我可以简单地解析:
<h1>{{ page?.title.rendered }}</h1>
我在这里缺少什么?
答案 0 :(得分:0)
我正在开发一个名为Angular的Xo插件,听起来像是针对这种情况的完美解决方案。
https://wordpress.org/plugins/xo-for-angular/
主要概念:
使用Xo API可以轻松获取WordPress中任何页面或发布的数据。例如:https://angularxo.io/xo-api/posts/get?url=/
这将检索完整的发布对象,并添加其他内容,例如meta和ACF字段(如果已配置)。
Xo还会动态生成所有路由,这使您可以通过WordPress正常定义页面结构。由于WordPress和Angular都使Xo保持完全同步,因此无需按其子标题检索页面或帖子。
动态路线示例:https://angularxo.io/xo-api/routes/get
还有一个节点模块angular-xo
,它提供了一个内置的解析器,可以为每个页面视图检索此数据,并使这些数据在模板中可用。
有关此功能的更多信息:https://angularxo.io/guides/routing
使用Xo的示例主题:https://github.com/WarriorRocker/angular-xo-material
更多文档(正在进行中):https://angularxo.io/