私は次のような階層を持っています。angular4の階層依存性注入
Component1
Component2
component3
この階層を使用することも、ユーザーはcomponent2またはcomponent3を個別に使用することもできます。 各コンポーネントにAggregatorServiceが注入されます。
親が存在するかどうかをチェックするように集約サービスを注入する必要があります。新しいインスタンスを作成する代わりにそのサービスインスタンスを使用する必要があります。
個別に使用する場合は、サービスの新しいインスタンスを取得する必要があります。
私たちが最も近い注射を好みたいのであれば、それはうまくいきます。
しかし、これをどのように達成できますか?あなたは@Optional()
constructor(@Optional() private service?:AggregatorService) {
if(!this.service) {
this.service = new AggregatorService();
}
}
や小さな欠点は、ここでは常に自身のインスタンスが作成されていること、である が、その後低下したnew
@Component({
selector: '...',
providers: [{provide: 'myAggService', useClass: AggregatorService}],
})
constructor(@Optional() @SkipSelf() private service?:AggregatorService, @Inject('myAggService') myAggService:AggregatorService) {
if(!this.service) {
this.service = myAggService;
}
}
でインスタンスを作成しないようにするを使用することができます
「コンポーネントが注入される」とはどういう意味ですか?通常、コンポーネントは注入されません。 「集約サービス」とは何ですか?あなたが達成しようとしていることを示すコードをいくつか追加してください。 –
成分が注入されていません。私は、各コンポーネントがコンストラクタに注入された同じサービスを持つことを意味しました。 実際にあなたは私の要件を理解しています。あなたの回避策を試してみましょう。 – tushar