В модуле из NPM отсутствуют объявления @NgModule, @Directive, хотя он есть в исходном коде на Github. Это мешает мне импортировать директиву для привязки данных из атрибута HTML.
Я пытаюсь использовать пакет angular-gtag для регистрации пользовательских параметров в Google Analytics с использованием атрибута [params], как определено в файле readme здесь: https://github.com/codediodeio/angular-gtag
<div gtagEvent trackOn="click" action="myAction" [params]="{ myDimension: myDimensionValue}"></div>
Где myDimensionValue — это переменная содержащего компонента.
Это вызывает ошибку:
Template parse errors:
Can't bind to 'params' since it isn't a known property of 'div'.
Чтение этой ошибки (например, здесь: Angular 4 Невозможно привязать к ‹property›, так как это не известное свойство ‹component› или здесь: Невозможно выполнить привязку к 'x', так как это неизвестное свойство 'y') приводит к предположению, что мне нужно добавить класс GtagEventDirective в объявления в app.module.ts.
Однако это приводит к ошибке
Unexpected module 'GtagModule' declared by the module 'AppModule'. Please add a @Pipe/@Directive/@Component annotation
Глядя в источник пакета в node_modules, любые аннотации @Component или @Directive отсутствуют. Как ни странно, они присутствуют в исходном коде модуля на Github: https://github.com/codediodeio/angular-gtag/blob/master/lib/src/gtag-event.directive.ts и https://github.com/codediodeio/angular-gtag/blob/master/lib/src/gtag.module.ts
Так что я могу сделать здесь? Редактирование кода в node_modules не кажется лучшей идеей, и изменения здесь могут даже не подхватываться, поскольку в пакете уже есть транспилированные файлы.
Пробовал переустановить пакет. Я уверен, что у меня последняя версия (1.0.3), и источник в Github также указывает эту версию как последнюю.
Конечно, я мог бы создать проблему в репозитории Github, но исходный код там правильный. Любое изменение, которое я мог бы попросить, уже там. Моя проблема, кажется, где-то между NPM и моей машиной.
GtagModule
в свойAppModule
? - person Poul Kruijt   schedule 14.08.2019import { GtagModule} from 'angular-gtag';
@NgModule({ объявления: [AppComponent], импорт: [ ... GtagModule.forRoot({ trackingId: 'UA-something', trackPageviews: true } ) ... ], ... }) - person Simmetric   schedule 14.08.2019@Directive
. Это используется только в машинописном тексте, а модуль npm, вероятно, просто отправляет скомпилированный код es5. - person Poul Kruijt   schedule 14.08.2019