web-dev-qa-db-ja.com

Angular Injectable decorator-0個の引数が必要ですが、1個を取得しました

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

パラメータを受け入れない理由は何ですか?

前もって感謝します !

27
Atom

これはAngular 6の新機能です。

@Injectable({
  providedIn: 'root'
})

次の2つのオプションがあります。

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 

アップガードノード

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

Angularマテリアルを使用している場合は更新します

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/

Angularのアップグレード

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

その他のトラブルシューティング手順

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

29

私もこの問題を抱えており、app.module.tsの「Providers」にクラスサービスの名前を含めて解決しました。

このような:

@NgModule({
    declarations:[

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

    ],
    providers: [
        PostListService 
    ]
})
5
Rafael Marinho