2017-05-24 13 views
1

作品に初回のみを発する:角度@outputうーん...私は子コンポーネントにこれを持って

this.event.emit(true); 
this.calendarProviderService.addEvent(newEvent).subscribe(
    finished => { 
     if (finished == true) { 
      console.log (finished); 
      this.event.emit(false); 
     } 
    } 
) 

「真」EMITがうまく機能していることを確認してください。私の親コンポーネントでは私が持っている:

<add-event *ngIf="currentActionArea == 'addevent'" (event)="addNewEvent($event)"></add-event> 

addNewEvent(event){ 
    console.log("Emit recibido: " + event); 
    if(event == true){ 
     this.loaderMessage = "Guardando Evento..."; 
     this.loadingEvents = true; 
    } else { 
     this.switchButtonModel = '0'; 
     this.currentActionArea = null; 
     this.getEvents(); 
    } 
} 

しかし、サブスクリプションがfinnishedされると、その後、「偽」の作品はそれをしませ発します。

私を助けることができますか?

+0

コードは正常です。コンソールに 'console.log(finished)'が表示されますか? – AngularChef

+0

@AngularFranceはい私の友人... –

+0

働くこと無しにもっと言うことは難しいPlunker – AngularChef

答えて

1

問題は、サービスを使用してエミッタ値を設定することでした。これはベストプラクティスではありません。私はこれを使用して件名を解決しました:

import { Subject } from "rxjs/Subject"; 

@Injectable() 
export class CalendarProviderService { 

/** 
* To emit getActivityWork between two components 
*/ 
private _activityWorkSubject = new Subject<calendarActivityWork>(); 
public getActivityWork = this._activityWorkSubject.asObservable(); 

    constructor() { } 

    /** 
    * To set the activity work value 
    * @param calendarActivity the activity to show 
    */ 
    doActivityWork(calendarActivity : calendarActivityWork){ 
     return this._activityWorkSubject.next(calendarActivity); 
    } 
. 
. 
. 

これは誰にも役立ちます。

関連する問題