Angular @Output emit仅在第一次

时间:2017-05-24 18:05:10

标签: angular eventemitter angular-components

嗯......我在儿童组件上有这个:

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

请检查" True"发射效果很好。在我的父组件上我有:

  <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();
    }
}

但是当订阅完成时,那么&#34; false&#34;发出它不起作用。

你能帮助我吗?

1 个答案:

答案 0 :(得分:2)

问题在于我使用服务来设置发射器值。这不是最佳做法。我用主题解决了这个问题:

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);
    }
.
.
.

希望这对任何人都有帮助。