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
パラメータを受け入れない理由は何ですか?
前もって感謝します !
これはAngular 6の新機能です。
@Injectable({
providedIn: 'root'
})
次の2つのオプションがあります。
1)Angular 5ドキュメントを参照してください。 (@ r-richardsのメモ-左ナビゲーションの下部にあるドロップダウンでドキュメントのバージョンをv5に変更します。)
2)プロジェクトをAngular 6にアップグレードして問題を修正します
公式のAngularアップグレードガイドに従ってください。
Angularのバージョンとアップグレードするバージョンを選択する短いフォームに記入します。次に、アップグレードを実行するために必要な手順のリストが表示されます。すべてのアップグレードについて、このガイドに従う必要があります。 (離れて移動する前に賛成してください):)
ここに、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/
その他のトラブルシューティング手順
私もこの問題を抱えており、app.module.tsの「Providers」にクラスサービスの名前を含めて解決しました。
このような:
@NgModule({
declarations:[
],
imports:[
CommonModule,
HttpClientModule
],
exports:[
],
providers: [
PostListService
]
})