promesas observables javascript angular typescript promise observable

javascript - observables - Convertir una promesa en observable



promesas vs observables (3)

tratando de convertir la primera función de promesa de swal en observable e intentando usar la acción de cancelar. ¿Puede alguien ayudarme con la sintaxis por favor?

swal({ title: ''Are you sure?'', text: "You won''t be able to revert this!", type: ''warning'', showCancelButton: true, confirmButtonColor: ''#3085d6'', cancelButtonColor: ''#d33'', confirmButtonText: ''Yes, delete it!'', cancelButtonText: ''No, cancel!'', confirmButtonClass: ''btn btn-success'', cancelButtonClass: ''btn btn-danger'', buttonsStyling: false }).then(function () { swal( ''Deleted!'', ''Your file has been deleted.'', ''success'' ) }, function (dismiss) { // dismiss can be ''cancel'', ''overlay'', // ''close'', and ''timer'' if (dismiss === ''cancel'') { swal( ''Cancelled'', ''Your imaginary file is safe :)'', ''error'' ) } })

Hasta ahora tengo lo siguiente:

export class DialogService { confirm(title: string, message: string):Observable<any> { return Observable.fromPromise(swal({ title: title, text: message, type: ''warning'', showCancelButton: true })); }; }

¿Cómo agrego la function (dismiss) en el cuadro anterior?


No estoy seguro de que swal use la API nativa de Promise , creo que usa una biblioteca de promesas para JavaScript como q u otra cosa.

export class DialogService { confirm(title: string, message: string):Observable<any> { return Observable.create( (observer: any) => { swal({ title: title, text: message, type: ''warning'', showCancelButton: true }).then((data)=>{ observer.next(data); },(reason)=>{ observer.error(reason); }) }) } }


Nvm, terminé con lo siguiente, ..

return Observable.create((observer) => { if (component.isUntouched()) { observer.next(true); } else { swal({ title: ''Sure?'', text: ''Not saved, are you sure?'', type: ''warning'', showCancelButton: true }).then(() => { observer.next(true); }, () => { observer.next(false); }) } });

Para completar, el component.isUntouched() se define de la siguiente manera:

@ViewChild(''appForm'') appForm: NgForm; ... isFormTouched():boolean{ return this.eventForm.dirty; }

Y en la plantilla / html:

<form class="form form-horizontal" (ngSubmit)="submitEvent()" #appForm="ngForm"> .. </form>