2017-01-24 7 views
0

Мне нужна помощь в получении результатов от компонента ngbModal.как я могу получить результат от ngbModal компонента

Я открываю модальное со ссылкой

<a class="order-collection-options-link" (click)="openTimePicker()">{{'ORDER_COLLECTION_OPTIONS_LABEL' | dict}}</a> 

вот мой openTimePicker() метод

openTimePicker() { 
    const modalRef =  this.modalService.open(DateTimePickerModalComponent); 
    console.log(modalRef.componentInstance); 
}  

мой DateTimePickerModalComponent. Он имеет две кнопки Применить и OK, и каждый испускает onApplySelection события и onConfirmSelection ...

@Component({ 
    selector: 'date-time-picker-modal', 
    styleUrls: ['./dateTimePickerModal.component.scss'], 
    templateUrl: './dateTimePickerModal.component.html', 
}) 

export class DateTimePickerModalComponent { 

private selection : Date[] = []; 

    @Output() onApplySelection: EventEmitter<Date> = new EventEmitter<Date>(); 
    @Output() onConfirmSelection: EventEmitter<Date[]> = new EventEmitter<Date[]>() 

    ... 


} 

Так что мне нужно знать, как прикрепить мой «родительский» компонент для этих событий в методе Open() ..

ответ

0

После большего поиска в сети это то, с чем я столкнулся, и это должно быть подходящим способом сделать это. Обратите внимание, что мои компоненты не являются реальными в отношении PARENT CHILD. Поэтому я реализовал сервис и использовал методы подписки.

@Injectable() 
export class DateTimePickerModalService { 

    private confirmedSelectionSource = new Subject<Date[]>(); 
    private appliedSelectionSource = new Subject<Date>(); 

    confirmedSelection$ = this.confirmedSelectionSource.asObservable(); 
    appliedSelection$ = this.appliedSelectionSource.asObservable(); 


    constructor() { 

    } 

    confirmSelection(selection : Date[]) { 
    this.confirmedSelectionSource.next(selection); 
    } 


    applySelection(selectedDate : Date) { 
    this.appliedSelectionSource.next(selectedDate); 
    } 

} 

и добавил его в app.modules.ts в провайдерах []

и в моей службе, которая должна быть informmed об этих изменениях я реализовал подписки() методы

}