Sekarang, saya memiliki halaman awal di mana saya memiliki tiga tautan. Setelah Anda mengklik tautan 'teman' terakhir, Komponen teman yang tepat akan diinisiasi. Di sana, saya ingin mengambil / mendapatkan daftar teman-teman saya yang disimpan di file friends.json. Sampai sekarang semuanya berfungsi dengan baik. Tapi saya masih pemula untuk layanan HTTP angular2 menggunakan RxJs yang dapat diamati, peta, berlangganan konsep. Saya sudah mencoba memahaminya dan membaca beberapa artikel tetapi sampai saya masuk ke pekerjaan praktis, saya tidak akan memahami konsep-konsep itu dengan benar.
Di sini saya sudah membuat plnkr yang berfungsi kecuali pekerjaan terkait HTTP.
teman saya
import {Component,View,CORE_DIRECTIVES} from 'angular2/core';
import {Http, Response,HTTP_PROVIDERS} from 'angular2/http';
import 'rxjs/Rx';
@Component({
template: `
<h1>My Friends</h1>
<ul>
<li *ngFor="#frnd of result">
{{frnd.name}} is {{frnd.age}} years old.
</li>
</ul>
`,
directive:[CORE_DIRECTIVES]
})
export class FriendsList{
result:Array<Object>;
constructor(http: Http) {
console.log("Friends are being called");
// below code is new for me. So please show me correct way how to do it and please explain about .map and .subscribe functions and observable pattern.
this.result = http.get('friends.json')
.map(response => response.json())
.subscribe(result => this.result =result.json());
//Note : I want to fetch data into result object and display it through ngFor.
}
}
Mohon panduan dan jelaskan dengan benar. Saya tahu ini akan sangat bermanfaat bagi banyak pengembang baru.
getFriends(){return http.get('friends.json').map(r => r.json());}
. Sekarang, Anda dapat menelepongetFriends().subscribe(...)
tanpa harus menelepon.json()
setiap saat.Konsep
Dapat diobservasi dalam menangani proses dan acara asinkron pendek. Dibandingkan dengan janji, ini dapat digambarkan sebagai acara yang dapat diobservasi = janji + acara.
Apa yang hebat dengan yang bisa diamati adalah bahwa mereka malas, mereka dapat dibatalkan dan Anda dapat menerapkan beberapa operator di dalamnya (seperti
map
, ...). Ini memungkinkan untuk menangani hal-hal yang tidak sinkron dengan cara yang sangat fleksibel.Sampel yang hebat menggambarkan kekuatan terbaik yang dapat diobservasi adalah cara untuk menghubungkan input filter ke daftar filter yang sesuai. Ketika pengguna memasukkan karakter, daftar di-refresh. Dapat diamati menangani permintaan AJAX yang sesuai dan membatalkan permintaan dalam proses sebelumnya jika permintaan lain dipicu oleh nilai baru dalam input. Ini kode yang sesuai:
(
textValue
adalah kontrol yang terkait dengan input filter).Berikut ini adalah deskripsi yang lebih luas dari use case tersebut: Bagaimana cara melihat perubahan bentuk di Angular 2? .
Ada dua presentasi hebat di AngularConnect 2015 dan EggHead:
Christoph Burgdorf juga menulis beberapa posting blog yang bagus tentang masalah ini:
Beraksi
Sebenarnya mengenai kode Anda, Anda mencampur dua pendekatan ;-) Inilah mereka:
Kelola yang bisa diamati dengan Anda sendiri . Dalam hal ini, Anda bertanggung jawab untuk memanggil
subscribe
metode pada yang dapat diamati dan menetapkan hasilnya ke dalam atribut komponen. Anda kemudian dapat menggunakan atribut ini dalam tampilan untuk beralih ke koleksi:Pengembalian dari keduanya
get
danmap
metode yang diamati bukan hasilnya (dengan cara yang sama daripada dengan janji).Biarkan mengelola yang dapat diamati dengan templat Angular . Anda juga dapat memanfaatkan
async
pipa untuk mengelola secara implisit pengamatan. Dalam hal ini, tidak perlu memanggilsubscribe
metode secara eksplisit .Anda dapat melihat bahwa yang diamati itu malas. Jadi permintaan HTTP yang sesuai hanya akan dipanggil sekali pendengar dengan melampirkan di atasnya menggunakan
subscribe
metode.Anda juga dapat melihat bahwa
map
metode ini digunakan untuk mengekstraksi konten JSON dari respons dan menggunakannya kemudian dalam pemrosesan yang dapat diamati.Semoga ini bisa membantu Anda, Thierry
sumber
pipes
juga merupakanobservables
. lihat video ini: youtube.com/watch?v=bVI5gGTEQ_U disarankan oleh thierry untuk info lebih lanjut.API HttpClient diperkenalkan di versi 4.3.0. Ini adalah evolusi dari API HTTP yang ada dan memiliki paket sendiri @ angular / common / http. Salah satu perubahan yang paling penting adalah bahwa sekarang objek respons adalah JSON secara default, jadi tidak perlu menguraikannya dengan metode peta lagi. Jauh bisa kita gunakan seperti di bawah ini
sumber