From c20bcf997aa560509b4a3ea00a9d3c9110ba4799 Mon Sep 17 00:00:00 2001 From: Scott Date: Wed, 9 Aug 2017 04:21:52 +0800 Subject: [PATCH] fix(xxx-intl): replace misused EventEmitter with Subject (#6313) * fix(xxx-intl): replace misused EventEmitter with Subject According to https://angular.io/api/core/EventEmitter#description, EventEmitter is not for services. And Subject is preferrable. * test(xxx-intl): update the related tests * refactor: remove spaces --- src/lib/datepicker/calendar.spec.ts | 2 +- src/lib/datepicker/datepicker-intl.ts | 5 +++-- src/lib/datepicker/datepicker.spec.ts | 2 +- src/lib/paginator/paginator-intl.ts | 5 +++-- src/lib/paginator/paginator.spec.ts | 2 +- src/lib/sort/sort-header-intl.ts | 5 +++-- src/lib/sort/sort.spec.ts | 2 +- 7 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/lib/datepicker/calendar.spec.ts b/src/lib/datepicker/calendar.spec.ts index 78be7540dca8..72ac3cd423a9 100644 --- a/src/lib/datepicker/calendar.spec.ts +++ b/src/lib/datepicker/calendar.spec.ts @@ -154,7 +154,7 @@ describe('MdCalendar', () => { .querySelector('.mat-calendar-period-button'); intl.switchToYearViewLabel = 'Go to year view?'; - intl.changes.emit(); + intl.changes.next(); fixture.detectChanges(); expect(button.getAttribute('aria-label')).toBe('Go to year view?'); diff --git a/src/lib/datepicker/datepicker-intl.ts b/src/lib/datepicker/datepicker-intl.ts index a7e4634878bb..c52f0fb0ce8e 100644 --- a/src/lib/datepicker/datepicker-intl.ts +++ b/src/lib/datepicker/datepicker-intl.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {Injectable, EventEmitter} from '@angular/core'; +import {Injectable} from '@angular/core'; +import {Subject} from 'rxjs/Subject'; /** Datepicker data that requires internationalization. */ @@ -16,7 +17,7 @@ export class MdDatepickerIntl { * Stream that emits whenever the labels here are changed. Use this to notify * components if the labels have changed after initialization. */ - changes: EventEmitter = new EventEmitter(); + changes: Subject = new Subject(); /** A label for the calendar popup (used by screen readers). */ calendarLabel = 'Calendar'; diff --git a/src/lib/datepicker/datepicker.spec.ts b/src/lib/datepicker/datepicker.spec.ts index 8b7309003719..689002beddee 100644 --- a/src/lib/datepicker/datepicker.spec.ts +++ b/src/lib/datepicker/datepicker.spec.ts @@ -571,7 +571,7 @@ describe('MdDatepicker', () => { const toggle = fixture.debugElement.query(By.css('button')).nativeElement; intl.openCalendarLabel = 'Open the calendar, perhaps?'; - intl.changes.emit(); + intl.changes.next(); fixture.detectChanges(); expect(toggle.getAttribute('aria-label')).toBe('Open the calendar, perhaps?'); diff --git a/src/lib/paginator/paginator-intl.ts b/src/lib/paginator/paginator-intl.ts index d908f61467d9..1c9f6ec4c6f8 100644 --- a/src/lib/paginator/paginator-intl.ts +++ b/src/lib/paginator/paginator-intl.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {Injectable, EventEmitter} from '@angular/core'; +import {Injectable} from '@angular/core'; +import {Subject} from 'rxjs/Subject'; /** * To modify the labels and text displayed, create a new instance of MdPaginatorIntl and @@ -18,7 +19,7 @@ export class MdPaginatorIntl { * Stream that emits whenever the labels here are changed. Use this to notify * components if the labels have changed after initialization. */ - changes: EventEmitter = new EventEmitter(); + changes: Subject = new Subject(); /** A label for the page size selector. */ itemsPerPageLabel = 'Items per page:'; diff --git a/src/lib/paginator/paginator.spec.ts b/src/lib/paginator/paginator.spec.ts index 939176dd5446..7686df86a0c5 100644 --- a/src/lib/paginator/paginator.spec.ts +++ b/src/lib/paginator/paginator.spec.ts @@ -96,7 +96,7 @@ describe('MdPaginator', () => { const label = fixture.nativeElement.querySelector('.mat-paginator-page-size-label'); intl.itemsPerPageLabel = '1337 items per page'; - intl.changes.emit(); + intl.changes.next(); fixture.detectChanges(); expect(label.textContent).toBe('1337 items per page'); diff --git a/src/lib/sort/sort-header-intl.ts b/src/lib/sort/sort-header-intl.ts index ee9727c382e3..48c38d0dbd28 100644 --- a/src/lib/sort/sort-header-intl.ts +++ b/src/lib/sort/sort-header-intl.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {Injectable, EventEmitter} from '@angular/core'; +import {Injectable} from '@angular/core'; +import {Subject} from 'rxjs/Subject'; import {SortDirection} from './sort-direction'; /** @@ -19,7 +20,7 @@ export class MdSortHeaderIntl { * Stream that emits whenever the labels here are changed. Use this to notify * components if the labels have changed after initialization. */ - changes: EventEmitter = new EventEmitter(); + changes: Subject = new Subject(); /** ARIA label for the sorting button. */ sortButtonLabel = (id: string) => { diff --git a/src/lib/sort/sort.spec.ts b/src/lib/sort/sort.spec.ts index 8f4d54c6327c..1ac5b3ea2c2b 100644 --- a/src/lib/sort/sort.spec.ts +++ b/src/lib/sort/sort.spec.ts @@ -148,7 +148,7 @@ describe('MdSort', () => { const button = header.querySelector('.mat-sort-header-button'); intl.sortButtonLabel = () => 'Sort all of the things'; - intl.changes.emit(); + intl.changes.next(); fixture.detectChanges(); expect(button.getAttribute('aria-label')).toBe('Sort all of the things');