2017-02-08 15 views
7

Bu senaryoun Angular 2 belgelerinde olması gerektiğini hissediyorum, ancak hiçbir yerde bulamıyorum.Köşeli 2 - Sunucu hatalarının kontrol edilmesi için abone

Burada sunucu abone geri geliyor ben sonra forma

  • görüntülemek hataları ile 400 kötü istek döndüren
  • sunucuda geçersiz senaryo

    1. (nesne oluşturmak) bir form göndermek var Bir hata değişkeni veya bir şey kontrol etmek istiyorum (yani, eğer hata yoksa> yeni oluşturulan ayrıntı sayfasına yönlendirin)

    Bunun gibi bir şey çalıştığını hayal edin:

    this.projectService.create(project) 
        .subscribe(
         result => console.log(result), 
         error => { 
          this.errors = error 
         } 
        ); 
    } 
    
    if (!this.errors) { 
        //route to new page 
    } 
    
    yüzden bu nasıl bir Gözlenebilen eserlerde anlayış benim eksikliği gelebilir 2 Açısal çok yeniyim. Bu verileri formda görüntülemeyle ilgili bir sorunum yok, ancak ts bileşeni içinde nasıl görebileceğimi anlayamıyorum. Gerçekten sadece http oluşturmanın başarısını/başarısızlığını kontrol etmek istiyorum. İlgili RxJS belgelerinde belirtildiği üzere

  • cevap

    24

    , .subscribe() method hiç hata varsa tamamlanması denir üçüncü bir argüman alabilir. Referans için

    :

    1. [onNext] (Function): fonksiyon gözlenebilir sırayla her bir eleman için çağırmak için.
    2. [onError] (Function): İşlev gözlenebilir dizisinin olağanüstü sona ermesi üzerine çağırmak için.
    3. [onCompleted] (Function): İşlev gözlenebilir dizisinin zarif sona ermesi üzerine çağırmak için. (o çağrıldığında herhangi bir hata olmayacağını ima) düzgün sonlandırma çağırılacaklar beri

    nedenle onCompleted geri aramasında yönlendirme mantığı işleyebilir. Bir yan not olarak


    this.httpService.makeRequest() 
        .subscribe(
         result => { 
         // Handle result 
         console.log(result) 
         }, 
         error => { 
         this.errors = error; 
         }, 
        () => { 
         // 'onCompleted' callback. 
         // No errors, route to new page here 
         } 
        ); 
    

    , ayrıca bağımsız aramanın başarı/başarısızlık tamamlanması üzerine çağrılan bir .finally() method yoktur. Bu, sonuçtan bağımsız olarak bir HTTP isteğinden sonra belirli bir mantığı yürütmek istediğiniz senaryolarda yardımcı olabilir (örn., Günlüğe kaydetme amacıyla veya bir modelin gösterilmesi gibi bazı UI etkileşimleri için).

    Rx.Observable.prototype.finally(action)

    gözlemlenebilir sekansı incelikle veya çok sona kaynağı açıldıktan belirli bir eylemi çağırır.Örneğin

    , burada temel bir örnektir:

    import { Observable } from 'rxjs/Rx'; 
    import 'rxjs/add/operator/finally'; 
    
    // ... 
    
    this.httpService.getRequest() 
        .finally(() => { 
         // Execute after graceful or exceptionally termination 
         console.log('Handle logging logic...'); 
        }) 
        .subscribe (
         result => { 
         // Handle result 
         console.log(result) 
         }, 
         error => { 
         this.errors = error; 
         }, 
        () => { 
         // No errors, route to new page 
         } 
        ); 
    
    +1

    aşağıdaki ile elde edebilirsiniz, bu en iyisi. teşekkür ederim –

    1

    Sen gözlenebilirlerin hata işleme ilişkin bulunan tüm cevapların Out yolunu

    this.projectService.create(project) 
        .subscribe(
         result => { 
         console.log(result); 
         }, 
         error => { 
          console.log(error); 
          this.errors = error 
         } 
        ); 
    } 
    
    if (!this.errors) { 
        //route to new page 
    }