【问题标题】:Outlook Add-in using Angular 4使用 Angular 4 的 Outlook 插件
【发布时间】:2019-06-11 14:44:14
【问题描述】:

我正在使用 angular4 开发 Outlook 插件。我很难理解有关使用 Angular 开发 Office 插件的一些概念。

  1. 我是否需要在 main.ts 中同时实现 Office.initializeOffice.OnReady(),因为每当我启动我的应用程序时,我都会收到错误消息,尽管我使用了 Office.OnReady,但我还没有实现 Office.OnReady
  2. 每次在我的应用程序中使用某些办公组件时,是否需要使用Office.initialize
  3. 如果我在开发模式而不是生产模式下运行我的应用程序,它会影响我的插件吗?
  4. 是否可以在 Office 对话框而不是任务窗格中运行我的 Angular 应用程序,即我的任务窗格上有一个简单的 html(仅包含一个按钮),当我单击该按钮时,它会在对话框中打开我的 Angular 应用程序。
  5. 或者我可以在对话框中打开我的应用程序的单个组件吗?如果是,有人可以用示例代码解释一下。

【问题讨论】:

    标签: angular ms-office outlook-addin office-js office-addins


    【解决方案1】:
    1. 您只需要实现其中之一。在正确初始化Office 之前,您可能正在尝试访问某些办公方法。我通常喜欢做的是有一个带有微调器的加载屏幕,并且只有在办公室初始化后才从该屏幕导航。

      Office.initialize = function(reason) {
          window.location.hash = 'apploaded';
      }
      
    2. 不需要 - 您只需初始化一次,除非您正在执行服务器刷新。只要您留在应用程序的上下文中并且不刷新整个应用程序而只是在组件之间导航,就可以了。

    3. 它可能会,特别是如果本地表示您在没有 Office 上下文的情况下执行此操作(因此您不在客户端中)。我通常如何解决这个问题是永远不要直接访问 Office 对象,而是始终通过服务访问,如果 Office 对象/或其子属性丢失,它不会失败。所以而不是

      // calling directly in some component
      office.context.mailbox.item.to.getAsync 
      

      我愿意

      OfficeService.GetAsync() {
          if (Office && Office.context && Office.context.mailbox && ...) {
               // call real method
          }
          else {
               console.log('Detected local mode - without office context')
               // do a fake test operation instead of the real thing.
          }
      
      }
      
    4. 查看functionFile。这会在功能区中为您提供一个按钮,您基本上可以单击该按钮并执行一个功能。它仍会将 html 加载到不可见的浏览器中,但在这种情况下您不会获得任务窗格。不过,这应该只在一部分客户端中得到支持,而不是全部。

    5. 有几种方法可以做到这一点,您只需将清单中的任务窗格条目 url 指向该组件 url。像这样

      <SourceLocation DefaultValue="https://randommailaddin.org/component"/>
      

    并将/component 路由映射到您的组件,因此当用户单击按钮时,它只会加载该组件。不过,您仍然需要初始化 office 上下文,否则您的功能将无法正常工作。

    【讨论】:

    • 如果我想在对话框中打开我的应用程序,我应该把我的openDialog 代码放在哪里。?你能用示例代码解释一下吗?
    • 你能更新一下关于你想用 openDialog 做什么的问题吗?
    • 还有这方面的信息吗?
    • 对话功能的使用请参考DisplayDialogAsync
    猜你喜欢
    • 2017-10-11
    • 2018-03-27
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多