Angular2从Wordpress WP API获取页面数据

时间:2017-02-08 11:44:18

标签: javascript json wordpress angular

我正在使用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>

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我正在开发一个名为Angular的Xo插件,听起来像是针对这种情况的完美解决方案。

https://wordpress.org/plugins/xo-for-angular/

主要概念:

  • 您的Angular应用已加载,并作为主题在WordPress中存在。
  • 可以为页面和帖子选择的角度模板(模块)。
  • 在WordPress中创建的页面,帖子和其他内容的动态路由。

使用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/