2017-12-20 16 views
-1

角度5を使用しています 私のシナリオは1つのコンポーネントからです。サービス中のデータと別のコンポーネントから設定しています。サービスアングル5からデータを取得して取得する

コンポーネント - 1:

makeUser(row){ 
    this.agentsService.setSelectedAgentData(row); // setting the data (row) in agentsService. 
    const mrf = this.modalService.open(MakeUserComponent);  
} 

サービス: クラスでvaribleを宣言。私はメソッドを呼び出すときにここ

ngOnInit() { 
    this.userDetails = this.agentsService.getSelectedAgentData(); 
    this.roles = this.agentsService.getRolesList(); 
    } 

selectedData値が空のオブジェクトであるthis.agentsService.getSelectedAgentData:2 -

setSelectedAgentData(selectedTableRowData){ 
    this.selectedData = selectedTableRowData; 
    } 
    getSelectedAgentData(){ 
    return this.selectedData; 
    } 

コンポーネント以下のよう

public selectedData:any = {}; 

セッターとゲッターメソッドであります()からの部品-2

助けていただければ幸いです。

+2

はそれができるあなたは内からそれを呼び出しているので ' ngOnInit() '?それはあなたが値をコンポーネント1から変更する前にそれを早く呼び出すことを意味します。 –

+0

'makeUser'とcomp n 2の' ngOnInit'にログインしようとします。makeUserのログはコンポーネント2のログの前に記録します。 – Dhyey

+0

コンポーネント2 this.modalService.open(MakeUserComponent);が呼び出されたときにロードされます。コンポーネント1から呼び出される –

答えて

0

この目的でSubject(rxjsライブラリ)を使用できます。したがって、Subjectは一方でデータを生成することができます。一方で、どの場所でも変更を購読することができます。 あなたのサービスは、次のようになります。

@Injectable() 
export class YourService { 

    public selectedData: Subject<any>; 

    constructor() { 
    this.selectedData = new Subject(); 
    } 

    generateSelectedAgentData(row: string) { 
    this.selectedData.next(row); 
    } 
} 

をあなたの最初のコンポーネントで:

makeUser(row){ 
    this.agentsService.generateSelectedAgentData(row); 
    const mrf = this.modalService.open(MakeUserComponent);  
} 

を2番目のコンポーネントで:

constructor(private ys: YourService){ 
    this.ys.selectedData.subscribe(
     data => { 
     console.log(data); 
     this.userDetails = data; 
    }); 
} 
関連する問題