2

На моей базе проектов на gulp Я пытался реализовать пользовательский декоратор для данных проверка, но в точке я застрял из-за этой ошибки:Ошибка с угловым 2 (2.0.0 до 2.2.0 ~) при добавлении пользовательского декоратора с помощью строки «import» reflect-metadata »

Error: Can't resolve all parameters for LoginService: (?, ?, ?).(…) 

Или ошибка, как это в других случаях:

Unexpected value 'AppComponent' declared by the module 'AppModule' 

Тогда я начал делать некоторые тесты, и я узнал, что линия вызывает эта ошибка:

import "reflect-metadata"; 

Вот две версии учебника тур-оф-героев:

With the error caused by importing reflect-metadata.

And with the solution.

EDIT

Я отредактировал заголовок, добавив версии углового, что я уверен, что это исправление работает, начиная с версии 1.3.0. У меня проблемы с использованием декораторов, и именно поэтому я перемещаю свои проект от глотка к WebPack

+0

Эти ошибки не звучат так, как будто это имеет какое-либо отношение к декоратору. Вы говорите, что все работает, когда вы не используете декоратор? Если это так, вы установили в проект «отражение-метаданные»? –

+0

Да, все работает отлично, если я удаляю декоратор, устраняя @Validate загрузку приложения правильно ... Я загрузил тур-оф.heroes без редактирования ничего, и на самом деле я также пытался посмотреть, будет ли более новая версия углового правильно работать, но с версией 2.1.0-beta.0 у меня все еще есть эта проблема. И да, 'reflect-metadata:^0.1.3' уже находится в пакете.json проекта тура-героев. – Lemmy4555

ответ

4

После дня отладки углового и редактирования моего кода я нашел решение этой проблемы только путем добавления другого импорта поверх всех других импортных:

import "reflect-metadata"; 

к классу, который упоминается в сообщении об ошибке даже если класс не использует объект отражения-метаданных:

eg Если вы получаете сообщение об ошибке, как это:

Error: Can't resolve all parameters for LoginService: (?, ?, ?).(…) 

Или

Unexpected value 'AppComponent' declared by the module 'AppModule' 

Добавить импортную линию в LoginService классов и AppComponent решить эту проблему.

Here is a working version on Plunker.

EDIT

Я редактировал название, добавив версии углового, который я уверен, что это исправление работает, начиная с версии 1.3.0 У меня возникли проблемы с использованием декораторов, и именно поэтому я перемещаю свой проект из gulp в webpack

+0

Это спасло мой день –

+1

У меня была такая же проблема, важная сторона для меня, заключается в том, чтобы добавить импорт выше всех других импортов в app.module.ts или что-то, что названо вашим файлом модуля. –

0

У меня такая же ошибка в консоли

Error: Can't resolve all parameters for XXX: (?, ?, ?)

и я нашел решение с предоставлять свои услуги на NgModule смотрите мой ответ here

я надеюсь помочь вам.

+0

Ошибка возникает, когда я использую метаданные отражения импорта. В любом случае я пробовал ваше решение, добавив эту строку '{обеспечить:« appLoginService », useClass: LoginService}, и отредактировал точки впрыска следующим образом:' @Inject ('appLoginService') private loginService: LoginService'.I все еще есть ошибка – Lemmy4555

+0

Хорошо, я попробую сделать пример в plunker через час и вставить здесь, если я найду решение. –

+0

Я не понимаю, почему вы хотите это сделать, но это похоже на работу в моем примере [здесь] (https://plnkr.co/edit/9jx3TQqHwy9kAlMV7yoD?p=preview). Я положил отладчик на сеттер в оформлении и остановился там. , если вы объясните больше, что вы хотите сделать, возможно, поможет вам в каком-то другом примере. –

2

Исходя из ответа Lemmy4555 (у меня нет комментариев для комментариев), я смог исправить это, добавив

import "reflect-metadata"; 

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

Это не идеальное решение, но IMO оно чище, чем импорт, когда появляются ошибки.

0

Я установил подобную ошибку (Unexpected value 'XXX' declared by the module 'AppModule') путем удаления import 'reflect-metadata'; заявление и установка типизации для Reflect по npm install @types/reflect-metadata --save-dev

 Смежные вопросы

  • Нет связанных вопросов^_^