البرمجة

فهم مبادئ Reactive Programming في Angular 2

لقد وجدت خطأ في رمزك. الخطأ الذي تحصل عليه يحدث لأن valueChanges ليس دائمًا يعود بنفس النوع. في حالتك، يتم تحويل القيمة إلى نوع string باستخدام str، مما يجعل TypeScript يفترض أن valueChanges يعود بنوع FormControl بدلاً من Observable.

لحل هذا الخطأ، يمكنك استخدام FormControl بدلاً من Control، وهذا سيعمل بشكل صحيح:

typescript
import { Component } from '@angular/core'; import { FormBuilder, FormGroup, FormControl } from '@angular/forms'; import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/map'; @Component({ selector: 'my-app', template: `
`
}) export class AppComponent { form: FormGroup; constructor(fb: FormBuilder) { this.form = fb.group({ search: [] }); var search = this.form.get('search') as FormControl; search.valueChanges .debounceTime(400) .map(str => str.replace(' ', '-')) .subscribe(x => console.log(x)); } }

بالنسبة لكيفية تشغيل مشروع Angular 2 على Plunker، يمكنك اتباع الخطوات التالية:

  1. افتح Plunker (https://plnkr.co/).
  2. قم بإنشاء ملف جديد (New File) وسمّه index.html.
  3. قم بإنشاء ملف جديد آخر وسمّه app.ts.
  4. ضع الكود الخاص بك في app.ts.
  5. في index.html، قم بتضمين المكتبات التالية:
html
<script src="https://unpkg.com/core-js/client/shim.min.js">script> <script src="https://unpkg.com/zone.js/dist/zone.js">script> <script src="https://unpkg.com/reflect-metadata/Reflect.js">script> <script src="https://unpkg.com/systemjs/dist/system.src.js">script> <script src="systemjs.config.js">script> <script> System.import('app').catch(function(err){ console.error(err); }); script>
  1. في نفس الملف، قم بإضافة عنصر script لتحميل ملف app.ts:
html
<script> System.import('https://code.angularjs.org/2.0.0-beta.0/Rx.umd.js').catch(function(err){ console.error(err); }); System.import('https://code.angularjs.org/2.0.0-beta.0/http.umd.js').catch(function(err){ console.error(err); }); System.import('https://code.angularjs.org/2.0.0-beta.0/forms.umd.js').catch(function(err){ console.error(err); }); System.import('https://code.angularjs.org/2.0.0-beta.0/common.umd.js').catch(function(err){ console.error(err); }); System.import('https://code.angularjs.org/2.0.0-beta.0/platform-browser-dynamic.umd.js').catch(function(err){ console.error(err); }); script>
  1. في نهاية الملف، قم بإضافة تكوين SystemJS لتحميل app.ts:
html
<script> System.config({ packages: { app: { format: 'register', defaultExtension: 'js' } } }); script>
  1. انسخ الكود الخاص بـ app.ts إلى المحرر في Plunker.
  2. اضغط على زر “Run” في أعلى الصفحة.

بهذه الطريقة، يمكنك تشغيل تطبيق Angular 2 الخاص بك على Plunker.

المزيد من المعلومات

أحد النقاط الهامة التي يجب أن تأخذها في اعتبارك أثناء تعلم Angular 2 هو فهم مبدأ عمل Reactive Programming الذي يستخدمه Angular بشكل واسع. في الشفرة التي قمت بتقديمها، تستخدم valueChanges التي تعود بـ Observable لتتبع تغييرات قيمة الحقل، وباستخدام العمليات الردية (Reactive Operators) مثل debounceTime و map، يمكنك تحويل وتأخير وتنقيح القيمة المعادة قبل التعامل معها. هذا يتيح لك التحكم بشكل أفضل في تدفق البيانات واستجابة التطبيق لهذه التغييرات.

بالإضافة إلى ذلك، عليك أيضًا فهم مفهوم Reactive Forms في Angular. تستخدم Reactive Forms لبناء نماذج الويب وتتيح لك التحكم الكامل في حالة وقيم المدخلات، بالإضافة إلى توفير وسائل للتحقق من صحة البيانات وتطبيق الاستجابات المناسبة.

أحد المصادر المفيدة التي يمكن أن تساعدك في فهم المزيد حول Angular 2 هو موقع Angular.io الرسمي، حيث يوفر وثائق شاملة ومفصلة وأمثلة توضيحية تفاعلية لتعلم Angular 2 خطوة بخطوة.

زر الذهاب إلى الأعلى