Угловое наследование @Input вызывает странную ошибку компиляции с помощью ng-packagr - PullRequest
0 голосов
/ 03 июня 2019

Я испытываю очень неясное сообщение об ошибке в Angular 7 при попытке использовать @Input наследование. Сообщение об ошибке не имеет никакого смысла, потому что у меня есть 1 обязательный @Input и 2 необязательных @Input, чтобы математика не складывалась ...

Directive MyComponent, Expected 2 arguments, but got 1.

    at Object.<anonymous> (/home/project/node_modules/ng-packagr/lib/ngc/compile-source-files.js:53:68)
    at Generator.next (<anonymous>)
    at /home/project/node_modules/ng-packagr/lib/ngc/compile-source-files.js:7:71
    at new Promise (<anonymous>)
    at __awaiter (/home/project/node_modules/ng-packagr/lib/ngc/compile-source-files.js:3:12)
    at Object.compileSourceFiles (/home/project/node_modules/ng-packagr/lib/ngc/compile-source-files.js:19:12)
    at Object.<anonymous> (/home/project/node_modules/ng-packagr/lib/ng-v5/entry-point/ts/compile-ngc.transform.js:26:32)
    at Generator.next (<anonymous>)
    at /home/project/node_modules/ng-packagr/lib/ng-v5/entry-point/ts/compile-ngc.transform.js:7:71
    at new Promise (<anonymous>)

Я создал этот сокращенный контрольный пример (https://stackblitz.com/edit/angular-p1r1mn)..., который представляет то, что я пытаюсь сделать, если я скомпилирую сокращенный контрольный пример с ng-packagr, все скомпилируется нормально, без каких-либо ошибок ... но в моем Фактический проект (также использует ng-packagr), он не работает и выдает ошибку выше ...

Если я уберу @Input из базового класса и перенесу его в дочерний класс, то все будет работать нормально ... однако с угловым значением 7 1014 * наследование не должно быть проблемой.

Может кто-нибудь дать мне несколько советов о том, как устранить эту ошибку? (

Добавлен пример кода шаблона ... Ошибка определенно НЕ является шаблоном. Как видите, я просто передаю ему 1 аргумент, но почему-то это «ожидание 2», я не знаю, где и как он может ожидать 2 аргумента. Я не знаю хорошего способа отладки.

<div>
    <ng-container *ngIf="gridConfig">
        <my-ag-grid [config]="gridConfig"></my-ag-grid>
        <my-component [config]="myPluginConfig"></my-component>
     </ng-container>
</div>

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

О, МОЙ Ф *** БОГ.Таким образом, проблема заключалась в том, что у меня в компоненте было следующее:

@HostListener('document:click', ['$event'])
stuffClicked($event, fromComponent) {

Но сообщение об ошибке от ng-packagr не указывает на что-либо удаленно близкое к этой проблеме!Directive MyComponent, Expected 2 arguments, but got 1. на самом деле пытается сказать мне, что @HostListener передает 1 аргумент, но моя stuffClicked функция ожидает 2 аргумента.Это похоже на ошибку ng-packagr.

В любом случае, чтобы обойти проблему, просто сделайте второй аргумент необязательным fromComponent?.

0 голосов
/ 04 июня 2019

Я думаю, что некоторые из «директив», используемых MyComponent, не соответствуют сигнатуре аргумента.

Добавление кода шаблона MyComponent поможет другим ответить. :)

...