2017-08-09 14 views
0

あるコンポーネントから動的なフォームを持つ別のコンポーネントに値を渡していますが、そのコンポーネントに値を受け取っていません。ダイナミックフォームに値を渡す際に何か間違ったことをしている場合や、ダイナミックフォームが値を受け取ることができない場合は、私は取得できません。角度2の動的形式で値を購読する方法

私は完全なコードを貼り付けていないので、大きすぎるので、関連するコードのみを述べました。これ以上の明確化が必要な場合はお知らせください。 AdminServiceで

、これは、被験体は、以下のように定義されたサービスクラスである:ProductItemsComponentで

startedEditingItem=new Subject<string>();  

、値を別のコンポーネントに以下のように送信されます。 ItemEditComponentで

onEdit(index:number){ 
    console.log("on edit"+this.productId+":"+this.childProductId+":"+index)// This is being printed , so value is sent 
    this.adminService.startedEditingItem.next(this.productId+":"+this.childProductId+":"+index);} 

は、値は、あなたが本当にここ Subjectが必要です

ngOnInit() { 
    console.log("edit item on init") // printed on console 
    this.subscription=this.adminService.startedEditingItem.subscribe(
     (id:string)=>{ 
     console.log("edit item>"+id); // not printed on console.so value is not received 
     this.initForm();}); 
    this.initForm();} 

答えて

0

以下のようにサブスクライブしていますか? Subjectを使用せずに簡単なサービスを使用してより簡単に通信できる場合があります。たとえば:

import { Injectable } from '@angular/core'; 

@Injectable() 
export class DataService { 
    serviceData: string; 
} 

あなたはここで詳細を見つけることができます:https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/

そして、ここでplunker:

https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview

+0

はい、あなたのソリューションは、私は疑問を持って再びalot.Butをworked.Thanksをgetter/setterを使用して同じことが達成できる場合、Subjectが導入される理由私は角度がないので、両方のアプローチの長所と短所を理解したいと思います。 – user2800089

+0

'Subject 'はAngularなものではなく、RxJSのものです(Reactive Extensions)。独自のpub/subモデルを構築するより複雑なケースにのみ必要です。 Angularの既存の機能(変更検出など)を使用する場合、この機能は必要ありません。ここにいくつかの詳細を網羅したブログ記事があります:https://stackoverflow.com/questions/34849873/what-are-the-semantics-of-different-rxjs-subjects/34860777#34860777 – DeborahK

関連する問題