Angular Injectable decorator - ожидал 0 аргументов, но получил 1 - PullRequest
0 голосов
/ 12 мая 2018

Я только начинаю с базового учебника по Angular, но у меня небольшая проблема с компиляцией.

Я следую учебному пособию на веб-сайте Angular.Я застрял с частью внедрения зависимостей, потому что она не хочет компилироваться.

В учебнике они просят создать сервис с:

ng generate service hero

В этом сгенерированном сервисе у вас естьНапример, декоратор:

@Injectable()

Затем они просят добавить параметр к этому декоратору, например:

@Injectable({
  providedIn: 'root'
})

Когда я пытаюсь это сделать, у меня появляется ошибка TypeScript, сообщающая мне:

ошибка TS2554: ожидалось 0 аргументов, но получено 1. Используются следующие версии:

Angular CLI: 1.7.4
Node: 9.5.0
OS: win32 x64
Angular: 5.2.10
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.7.4
@angular-devkit/build-optimizer: 0.3.2
@angular-devkit/core: 0.3.2
@angular-devkit/schematics: 0.3.2
@ngtools/json-schema: 1.2.0
@ngtools/webpack: 1.10.2
@schematics/angular: 0.3.2
@schematics/package-update: 0.3.2
typescript: 2.5.3
webpack: 3.11.0

Есть идеи, почему он не принимает параметр?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

У меня также была эта проблема, и я решил ее, включая имя службы классов в «Поставщиках» в app.module.ts.

, например:

@NgModule({
    declarations:[

    ],
    imports:[
        CommonModule,
        HttpClientModule
    ],
    exports:[

    ],
    providers: [
        PostListService 
    ]
})
0 голосов
/ 24 мая 2018

Это новая функция в Angular 6.

@Injectable({
  providedIn: 'root'
})

У вас есть два варианта:

1) Обратитесь к документации Angular 5. (Как отмечает @ r-richards - измените версию документов на v5 в раскрывающемся списке внизу левой панели.)

2) Обновите ваш проект до Angular 6, чтобы решить проблему

Следуйте официальному руководству по обновлению Angular.

Вы заполните небольшую форму, выбирая, на какую версию Angular вы работаете и какую версию хотите обновить. Затем он показывает вам список необходимых шагов для выполнения обновления. Вы должны следовать этому руководству для всех обновлений. (Пожалуйста, подтвердите перед отъездом): *

https://update.angular.io/

enter image description here

Вот некоторые заметки, которые я сделал при обновлении с Angular 5 до Angular 6.

Ваш пробег может варьироваться в зависимости от вашей конфигурации. Я связался с парой статей ниже, которые помогли мне.

Обновление npm (менеджер пакетов узлов)

npm install npm@latest -g 

Узел Upgarde

Для пользователей Windows и Mac самый простой способ - использовать официальный установщик Node. Или см. Статью ниже для Linux / Unix.

https://nodejs.org/en/download/

Upgarde Angular CLI в глобальном и местном масштабе

npm install -g @angular/cli
npm install @angular/cli

Обновление package.json

ng update @angular/cli

Обновление @ Angular / Core

ng update @angular/core

Обновите угловой материал, если вы его используете

ng update @angular/material

Проверьте другие пакеты, которые, возможно, потребуется обновить

npm outdated

Обновление всех устаревших пакетов

npm update

Или обновить конкретный пакет

npm update <package name>

Возможно, вам потребуется преобразовать файл angular-cli.json в angular.json

ng update @angular/cli --migrate-only --from=1.7.4

Ссылки:

Узел обновления

http://www.hostingadvice.com/how-to/update-node-js-latest-version/

Модернизация угловая

https://vitalflux.com/upgrade-angular-5-app-angular-6/

Другие шаги по устранению неполадок

https://stackoverflow.com/a/49811824/151325

...