2017-12-18 5 views
0

内の他のコンポーネントの結果に注入コンポーネントは、私のコードの一部です:上記のコードとここシングルトン

@Component({ 
    selector: '...', 
    templateUrl: " " 
}) 
export class QuoteComponent { 
    address: boolean[] = [false, false]; 

    constructor() { } 
    ... 
} 


import { QuoteComponent } from "..."; 
@Component({ 
    selector: '...', 
    templateUrl: "...", 
}) 
export class Addresses1Component { 
    constructor(private quote: QuoteComponent) { } 
} 


import { QuoteComponent } from "..."; 
    @Component({ 
     selector: '...', 
     templateUrl: "...", 
    }) 
    export class Addresses2Component { 
     constructor(private quote: QuoteComponent) { } 
    }  

プロバイダどこでもを定義せず、QuoteComponentはシングルトンとAddresses1Component, Addresses2Componentそれへのアクセスを持っています。 のサービスのように振る舞い、私はprovidersの配列のどこかに定義していないので、シングルトンではないことが期待されます。それについての良い説明?

+0

)コンストラクタにコンポーネントを挿入しています。なぜこれがコンパイルされるのか不思議です。しかし、それ以来、QuoteComponentは角型コンポーネントやサービスとしてではなく、グローバル変数として使用されています。しかし、私はここで推測しています。なぜあなたはサービスを作成しないのか、何らかの説明をしてください。 – Ore

+0

このコンポーネント(QuoteComponent)は、他の2つのアドレスコンポーネントにまたがるフォームを作成します。だからこそ、私はそのプロパティと値を取得するために、それを注入したいのです。 –

答えて

0

成分は注射可能であるとは考えられていません。反応的なForms APIを使用してフォームテンプレートを含む共有コンポーネントを作成します。

QuoteComponentが他のコンポーネント(フォームデータを含む)で利用可能なフォームを作成する場合は、フォームモデルのプロパティを模倣するタイプの変数myFormDataを持つサービスを作成します。また、このサービスではセッターとゲッターをset formData()get formData()と作成します。このサービスは、QuoteComponent、Addresses1Component、およびAddresses2Componentに注入する必要があります。

フォームが作成されたら、サービスで設定ツールを呼び出します。アドレスコンポーネントでgetterを呼び出し、メソッドsetValueを使用してフォームにデータからサービスのデータを入力します(例:

this.myFormModel.setValue(myService.formData); 
関連する問題