Как включить @ionic/pwa-elements в сборку Ionic4/Angular

Я новичок в Ionic4, но уже некоторое время использую Angular, поэтому в настоящее время экспериментирую с приложением Ionic4/Angular.

Я пытался интегрировать конденсатор для доступа к встроенным функциям из PWA, и у меня есть несколько тестов, работающих с плагином камеры, однако я должен включить ссылку на внешний скрипт pwa-elements в моем index.html согласно: https://capacitor.ionicframework.com/docs/getting-started/pwa-elements/

Это бесполезно, если я хочу, чтобы приложение могло работать в автономном режиме, поэтому я пытаюсь импортировать и связать его в сборке Ionic / Angular, но из документации не ясно, как это сделать в контексте Angular.

Я добавил "import '@ ionic / pwa-elements';" в мой app.module.ts, но, похоже, это не сработало (я просто понял эту проблему). Я пытался вручную ссылаться на скрипт ionicpwaelements.js в разделе сценариев моего файла angular.json, но ionicpwaelements.js ссылается на кучу других js-файлов в подкаталоге "ionicpwaelements" в модулях узла, которые он не может найти (и было бы слишком трудно ссылаться на них всех).

Как импортировать ионные элементы / pwa-элементы в приложение Ionic4/Angular?

1 ответ

Я думаю, что вы уже видели мой ответ в ветке Github, но опубликую его здесь для всех, кто не хочет просеивать эту ветку:

поскольку @ionic/pwa-elements являются веб-компонентами Stencil, их можно включить в проект Ionic 4 + Angular с помощью процесса, описанного в Angular Integration с Stencil:

SRC / main.ts

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

import { defineCustomElements } from '@ionic/pwa-elements/dist/loader';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.log(err));

defineCustomElements(window);

Компонент CameraModal использует несколько файлов SVG для значков и соседних сценариев. angular.json может быть изменен для включения этих ресурсов в сборку:

angular.json

/* ... */
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            /* ... */
            "assets": [
              {
                "glob": "**/*.svg",
                "input": "node_modules/@ionic/pwa-elements/dist/ionicpwaelements/icons",
                "output": "icons"
              },
              /*** Including the scripts below breaks Ionic Modals, but without them, you'll get a 404 error ***/
              {
                "glob": "**/*.js",
                "input": "node_modules/@ionic/pwa-elements/dist/ionicpwaelements",
                "output": "ionicpwaelements"
              },
/* ... */

Нарушение ионных модалов происходит и с внешней ссылкой на скрипт в index.html, так что, похоже, это отдельная проблема, которая еще не решена.

Спасибо, что разместили этот вопрос. Я боролся почти 2 часа.

В моем случае проблема заключалась в команде импорта, которая должна быть такой:

import { defineCustomElements } from '@ionic/pwa-elements/loader';

до пути его загрузчика.

Другие вопросы по тегам