
حتى أصدر ستيفن فلوين تقليديًا إصدارًا جديدًا ومقالًا عن ميزات الزاوي الجديد ، حاولت تجميع كل شيء معًا والإجابة على سؤال ما الجديد؟
واحدة من أروع الميزات التي كنا ننتظرها منذ ما يقرب من عامين هي Angular Ivy ، وأخيراً سوف تتجمع Angular 9 مع Ivy افتراضيًا. إذا كنت ترغب في الغوص في الدواخل في Angular Ivy ، فهناك مقطعان فيديو من AngularConnect: حول برنامج التحويل البرمجي ووقت التشغيل .
كما هو الحال دائمًا مع Angular CLI ، يمكنك الترقية بسهولة ، دليل مفصل .
فحص نوع القالب
ستتم إضافة علامةrictTemplates بالإضافة إلى fullTemplateTypeCheck ، وستعمل فقط في اللبلاب. في الوضع الكامل سيكون:
التحقق من ربط المكونات والتوجيهات إلى @Input
عند التحقق ، سيتم التحقق من typescriptrictNullChecks
التحقق من أنواع المكونات والتوجيهات ، بما في ذلك النوع العام
التحقق من القالب في سياق التنفيذ ، على سبيل المثال ، داخل * ngFor
التحقق من نوع الأحداث $ event في المكونات والتوجيهات ، وكذلك عند تنشيط
التحقق من الأنواع الصحيحة للمراجع المحلية لعناصر DOM ، على سبيل المثال ، عندما تقوم document.createElement بإرجاع علامة
بوجود مثل هذا النوع من التدقيق الصارم في القوالب ، من الضروري في بعض الأحيان تعطيل هذا الفحص ، لذلك توصلنا إلى $ any () لن يتم إجراء الفحص فيه.
مثال: {{$ any (person) .addresss.street}}
ContentChildren
ContentChild بشكل افتراضي سوف يعمل فقط مع الأطفال المباشرين
<comp> <div #bar> <!-- new runtime --> <div #foo></div> <!-- matches in old runtime --> </div> </comp>
للقيام بذلك ، سوف تحتاج إلى قطع أحفاد العلم
@ ContentChildren ('foo' ، { descendants : false}) foos: قائمة QueryList < ElementRef >
DI
يجب أن تحتوي جميع الفئات التي تستخدم Angular DI على أداة @Directive()
Angular ، مثل @Directive()
أو @Injectable
(تم السماح للفئات غير @Injectable
سابقًا فقط في وضع AOT أو إذا استخدمت من خلال Inject). بشكل افتراضي ، يجب على CLI ترقيتها بشكل صحيح.
إلى:
export class MyService {...} export class MyOtherService {...} export class MyThirdClass {...} export class MyFourthClass {...} export class MyFifthClass {...} @NgModule({ providers: [ MyService, {provide: SOME_TOKEN, useClass: MyOtherService},
بعد:
@Injectable() export class MyService {...} @Injectable() export class MyOtherService {...} export class MyThirdClass {...} export class MyFourthClass {...} export class MySixthClass {...}
إلى:
{provide: MyToken}
بعد:
{provide: MyToken, useValue: undefined}
يتم الآن تعيين مدخلات التوجيهات (على سبيل المثال ، الاسم في <my-comp name = "">) عند إنشاء طريقة عرض قبل اكتشاف التغيير (سبق تعيينها جميعًا أثناء اكتشاف التغيير).
بعض أكثر إثارة للاهتمام
يمكن أن توارث الخصائص مثل المضيف داخل @Component
و @Directive
(سبق أن ورثت فقط الخصائص ذات الحقول الصريحة مثلHostBinding).
يتم توفير دعم HammerJS من خلال استيراد HammerModule (سابقًا كان يتم تضمينه دائمًا في حزم العمل بغض النظر عما إذا كان التطبيق يستخدم HammerJS).
إذا تم حقن الرمز المميز @Host
أو @Self
، فإن حاقن الوحدة النمطية لا يبحث عن هذا الرمز المميز (سابقًا ، ستظل الرموز المميزة التي تحمل هذه العلامات على مستوى الوحدة النمطية).
عند الوصول إلى العديد من الروابط المحلية في القالب الذي يحمل نفس الاسم ، يتم أخذ الرمز الأول (تم أخذ المثيل الأخير سابقًا).
يتم تصدير التوجيهات المستخدمة في الوحدة النمطية التي تم تصديرها (ولكن لا يتم تصديرها بمفردها) بشكل عام (سابقًا ، قام المترجم تلقائيًا بتسجيل تصدير خاص مع اسم مستعار بحيث يمكنه استخدام معرفته العالمية لحل التعارضات)
الوظائف الخارجية أو الثوابت الخارجية في البيانات الوصفية للديكور غير قابلة للحل بشكل ثابت (في السابق ، يمكنك استيراد ثابت أو وظيفة من وحدة نمطية أخرى مترجمة ، على سبيل المثال ، من مكتبة ، واستخدام هذا الثابت / الوظيفة في تعريف @NgModule
الخاص بك).
مراجع المدخلات المباشرة في التوجيهات التي يمكن الوصول إليها من خلال الروابط المحلية لم تعد مدعومة بشكل افتراضي.
إذا كان هناك سمة فئة غير مرتبطة وربط عبر [class] ، فسيتم أيضًا إضافة فئات السمة غير ذات الصلة (سابقًا ، الربط من خلال الفئات يعيد كتابة الفئات في السمة unbound).
لم يعد من الممكن الكتابة على خطاطيف دورة الحياة باستخدام مجموعات من مثيلات التوجيهات للاختبار (للقيام بذلك ، قم بتغيير خطاطيف دورة الحياة على التوجيه نفسه).
تقوم الرموز المميزة للحقن الخاصة (مثل TemplateRef أو ViewContainerRef) بإرجاع مثيل جديد كلما طُلب منها (سابقًا ، تم البحث عن مثيلات إذا تم طلبها من عقد مشابهة). يؤثر هذا بشكل أساسي على الاختبارات التي تقارن هوية هذه الكائنات.
يحدث تحليل وحدة العناية المركزة في وقت التشغيل ، لذلك لا يُسمح إلا بالنصوص وعلامات HTML ومجلدات النص (تم السماح بالتوجيهات السابقة أيضًا داخل تعبيرات وحدة العناية المركزة).
متوقف
يتم تقديم تغييرات مهمة على واجهة برمجة التطبيقات هنا ، وسيتم حذف ما كان بالفعل قيد الإهمال.
عمليات إزالة واجهات برمجة التطبيقات المهملة
وإذا لم يكن هذا كافيًا ، فهناك المزيد .
حسنًا ، نتوقع إصدار Angular 9 بعد عطلة عيد الميلاد =):
لمعلوماتك ، لقد اتخذت قرارًا بالإبقاء على الإصدار #Angular 9.0 حتى العام المقبل حتى يتسنى لنا جميعًا قضاء بعض الوقت خلال الأسابيع المقبلة. أعيادا سعيدة وأراك في عام 2020!
وبالطبع ، اشترك في القناة في برقية ngFanatic حيث سيتم نشر المزيد من الأخبار حول Angular.