javascript - 使用 Angular 2 实现 Google Calendar API

标签 javascript angular typescript google-api google-calendar-api

我已尝试使用 Angular 2 连接到 Google Calendar API,以便我可以在我正在构建的 Web 应用程序上显示即将发生的事件。我浏览了 Google Calendar JavaScript 快速入门教程,尽管所有内容都在 index.html 文件中,但一切都运行良好。我能够设置 Google API 并将客户端 ID 和 API key 放入我的 JavaScript 代码中,它正确地列出了指定日历中即将发生的事件。

快速入门教程链接: https://developers.google.com/google-apps/calendar/quickstart/js

一旦我开始使用 JavaScript 教程,我就尝试使用 Angular2 简单地实现相同的功能,使用组件/服务而不是仅仅在 index.html 文件的脚本标记中使用原始 JavaScript。我大约成功了一半。

问题:我收到错误提示 “无法找到名称‘gapi’”

当我第一次点击调用代码加载 Google 日历信息的页面时,我收到这些错误,指出 gapi 未定义。 gapi 存在于代码中的多个位置,特别是在分别从 Google Calendar API 验证和检索事件数据的服务中。但是,如果我离开该页面并返回,数据将毫无错误地通过。我尝试使用异步等在 index.html 中加载正确的脚本标记,如下所示:

<script src="https://apis.google.com/js/client.js?onload=checkAuth" async></script>

我该如何解决这个问题?我的代码与在下面链接的存储库中看到的代码非常相似:

https://github.com/stefanreichert/angular2-google-calendar-example

最佳答案

问题是在身份验证完成之前尝试从 Google Calendar API 检索数据。使用另一个 promise 在身份验证成功完成后加载数据,检索到我正在寻找的事件数据。

此外,npm install --save @types/gapinpm install --save @types/gapi.auth2 似乎很有帮助在服务/组件中我想调用 gapi 的任何地方声明 var gapi: any

关于javascript - 使用 Angular 2 实现 Google Calendar API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434930/

相关文章:

javascript - 从 URL 显示由 decodeURIComponent 解码的 HTML 代码是否安全?

javascript - 如何在对象数组中找到下一个将某个属性设置为 false 的对象?

angular - ERR_INVALID_HTTP_RESPONSE 在 Google Chrome 浏览器中使用 Angular 7 和 ASP.Net Core 2.2

Angular/Jasmine : No provider for Overlay! 还有如何测试 Material 对话框

Angular 2+ 错误 : Cannot find name 'gapi'

javascript - 无法在React中使用package.json "exports"导入模块

javascript - clickHandler 或handleClick 或onClick 或signUp 或handleSignUp 或signUpHandler?

node.js - Sequelize 生成错误的查询? Sequelize 自动 ts 和 Sequelize

javascript - DOM Window卸载事件,靠谱吗?

javascript - PHP - 从创建嵌套 <div> 的文本文件中读取文本