使用Angular 2的无类型A-Frame组件

时间:2017-02-16 16:19:16

标签: angular typescript angular-cli aframe

有没有办法在Angular-CLI上运行没有打字的库?

就我而言,我正在尝试安装k-frame以使用aframe-template-component并通过documentation了解我必须创建一个typings.d.ts文件才能使用它使用TypeScript。根据{{​​3}}问题,我尝试了不同的选项,但我无法生成文件或直接在项目中导入。

我也试过运行并安装dts-gen,但我收到以下错误:

  

组件尝试在AFRAME可用之前注册

这意味着我必须首先注册A帧。由于我被困了一段时间,你对如何解决以下问题有所了解吗?提前感谢您的回复!

1 个答案:

答案 0 :(得分:3)

目前这不是一件容易的事。

我用AngularCli尝试过。我使用ng new创建了一个新项目,我已按照以下步骤操作:

  1. ng new kframetest

  2. 使用以下方式安装aframeaframe-template-component

    npm install aframe aframe-template-component --save
    
  3. 由于(zone.js和A-frame) catch attributeChangedCallback,您需要在zone.js之前加载A帧。然后(在polyfills.ts文件中)我添加了:

    import 'aframe';
    import 'aframe-template-component';
    

    import 'zone.js/dist/zone';

  4. 之前
  5. 使用kframe sample作为模板创建一个简单的组件。

  6. 为了让Angular可以解析特殊的html标签,例如<a-entity>,您必须使用CUSTOM_ELEMENTS_SCHEMA属性向NO_ERRORS_SCHEMA添加NgModuleschemas

    schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
    
  7. 运行该应用程序。

  8. 现在你可以在控制台中看到A-frame正在运行:

      

    在场景之前将A-Frame script标记放在HTML head中,以确保A-Frame的所有内容在从HTML中使用之前都已正确注册

    aframe-master.js:75646 A-Frame Version: 0.5.0 (Date 10-02-2017, Commit #bf8b8f9)
    aframe-master.js:75647 three Version: ^0.83.0
    aframe-master.js:75648 WebVR Polyfill Version: dmarcos/webvr-polyfill#a02a8089b
    

    但最大的问题是Angular尝试解析HTML并且他不理解aframe模板语法,你会遇到这样的错误:

      

    未处理的承诺拒绝:模板解析错误:   分析器错误:#[src: #boxesTemplate]中第6列的意外标记KFrameTestComponent

     </a-assets>
     <a-entity [ERROR ->]template="src: #boxesTemplate"
               data-box1color="red" data-box2color="green" data-box3color"): KFrameTestComponent@10:12
    
      

    嵌入式模板上的任何指令都未使用的属性绑定src。确保属性名称拼写正确,并且所有指令都列在@NgModule.declarations

     </a-assets>
    

    我一直在搜索没有Angular解析的添加html,但我没有找到...

    我已经尝试将模板添加到索引html中,它似乎有效,但我知道这不是您想要的情况。

    您可以从此处获取代码:https://gitlab.com/jros/angularcli-kframe