Ответ 1
В настоящий момент это непростая задача.
Я попробовал его с помощью AngularCli. Я создал новый проект с помощью ng new
, и я выполнил следующие шаги:
-
ng new kframetest
-
Установите
aframe
иaframe-template-component
, используя:npm install aframe aframe-template-component --save
-
Из-за обоих (zone.js и A-frame) catch
attributeChangedCallback
вам необходимо загрузить A-frame перед zone.js. Затем (вpolyfills.ts
файле) я добавил:import 'aframe'; import 'aframe-template-component';
Как раз перед
import 'zone.js/dist/zone';
-
Создайте простой компонент, используя образец kframe в качестве шаблона.
-
Чтобы Angular мог анализировать специальные теги html, такие как
<a-entity>
, вам нужно добавитьCUSTOM_ELEMENTS_SCHEMA
иNO_ERRORS_SCHEMA
вNgModule
с помощью свойстваschemas
:schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
-
Запустите приложение.
Теперь вы можете видеть, что в консоли работает A-frame:
Поместите тег A-Frame
script
вhead
HTML перед сценой, чтобы все, что для 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, вы получаете следующие ошибки:
Необработанное отклонение обещаний: ошибки анализа шаблона: Ошибка Parser: Неожиданный токен
#
в столбце 6 в[src: #boxesTemplate]
вKFrameTestComponent
</a-assets> <a-entity [ERROR ->]template="src: #boxesTemplate" data-box1color="red" data-box2color="green" data-box3color"): [email protected]:12
Связывание свойств
src
не используется какой-либо директивой для встроенного шаблона. Убедитесь, что имя свойства написано правильно, и все директивы указаны в@NgModule.declarations
.</a-assets>
Я искал добавить html без Angular, чтобы разобрать его, но я не нашел...
Я попытался добавить шаблон в индекс html и, похоже, работает, но я понимаю, что это не ваша желаемая ситуация.
Вы можете получить код отсюда: https://gitlab.com/jros/angularcli-kframe