Почему мой Angular SPA не идентифицирует элемент кнопки общего доступа в классе Google ()? - PullRequest
0 голосов
/ 02 апреля 2019

ТЛ; др Я получаю следующую ошибку при попытке добавить кнопку доли в классе Google в свое веб-приложение (angular 5, spa):

Uncaught Error: Template parse errors:
':g:sharetoclassroom' is not a known element:
1. If ':g:sharetoclassroom' is an Angular component, then verify that it is part of this module.
2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
    </div>
    <div class="qr-code">
        [ERROR ->]<g:sharetoclassroom url="..." size="32"></g:sharetoclassroom>
    </div>
  </div>
"): ng:///AppModule/ShareLinkComponent.html@18:8

Я хочу добавить кнопку доли Google в классе в свое веб-приложение, но не могу понять, почему элемент кнопки общего доступа не идентифицируется. Я добавил скрипт (<script src="https://apis.google.com/js/platform.js" async defer></script>) в <head> в index.html. Я добавил элемент кнопки «Поделиться» в один из компонентов:

<!-- share-link.component.html -->

<mat-dialog-content>
  <div i18n class="share-link-text">
      Share the assessment link with your students.
  </div>
  <div class="share-container">
    <div class="share-to-classroom">
        <g:sharetoclassroom url="http://url-to-share" size="32"></g:sharetoclassroom>
    </div>
  </div>
</mat-dialog-content>

Но когда я запускаю код локально, я получаю ошибку ':g:sharetoclassroom' is not a known element. Я действительно не понимаю, что происходит / отсутствует. Как ни странно, когда я добавляю элемент в index.html (не в любом другом компоненте), кнопка «Поделиться» фактически появляется и работает, как и ожидалось. Кто-нибудь знает о каких-либо проблемах с загрузкой сторонних скриптов / использованием gapi / использованием сторонних элементов, которые (казалось бы) не нужно добавлять в AppModule?

Я попытался поместить скрипт непосредственно в компонент, добавил NO_ERRORS_SCHEMA в @ NgModule.schemas (который подавлял ошибку, но кнопка просто не появлялась, имела размеры 0x0 ...). У меня нет креативных идей, но я добавлю, что я не большой специалист по угловым вопросам ...

1 Ответ

0 голосов
/ 02 апреля 2019

Добавьте следующее к вашему модулю, как подсказывает ошибка. Проблема в том, что angular не может распознать компонент g:sharetoclassroom, потому что это веб-компонент, объявленный вне области видимости angular. Вы должны сообщить это через NO_ERRORS_SCHEMA. Что в основном позволяет вам добавлять внешние веб-компоненты в этот модуль.

@NgModule({
…
schemas: [
   NO_ERRORS_SCHEMA
]
})

Edit: Я не вижу загрузки скрипта веб-компонента в ваш код. Просьба обязательно сделать это после тега веб-компонента ( без async и defer).

...