Angular 6にシングルトンサービスの作成方法にいくつかの変更があったことを理解しています。アクセスするコンポーネントごとに1回構築する必要がある認証サービスがあります。サービスのルートへのプロバイダー:
@Injectable({
providedIn: 'root'
})
そして、app.module.tsファイルで、AuthServiceをNgModuleのプロバイダーの1つとして設定します。ただし、Authサービスを使用するさまざまなコンポーネント間をルーティングするたびに、Authサービスの新しいインスタンスが作成されます(最初に呼び出されたときからデータをクリアします)。認証サービスが一度だけインスタンス化されることを確認してから、異なるコンポーネント間でそのインスタンスにアクセスするにはどうすればよいですか?
他の混乱を避けるために、ドキュメントに記載されているように、2つの方法でシングルトンを作成できます( singleton-services ):
@Injectable({providedIn: 'root'})
。{providedIn:'root'}
を使用する必要はありません。私の場合、JIT(通常のngビルド/ ngサーブ)を使用すると、シングルトンサービスが機能しませんでした。私にとっては、AoT(ng build --aot/ng serve --aot)を使用した場合にのみ機能しました。