diff --git a/src/lib/paginator/paginator-intl.ts b/src/lib/paginator/paginator-intl.ts index d8e3566c4b30..60c46ddf89fb 100644 --- a/src/lib/paginator/paginator-intl.ts +++ b/src/lib/paginator/paginator-intl.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {Injectable} from '@angular/core'; +import {Injectable, SkipSelf, Optional } from '@angular/core'; import {Subject} from 'rxjs/Subject'; /** @@ -46,3 +46,16 @@ export class MatPaginatorIntl { return `${startIndex + 1} - ${endIndex} of ${length}`; } } + +/** @docs-private */ +export function MAT_PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl: MatPaginatorIntl) { + return parentIntl || new MatPaginatorIntl(); +} + +/** @docs-private */ +export const MAT_PAGINATOR_INTL_PROVIDER = { + // If there is already an MatPaginatorIntl available, use that. Otherwise, provide a new one. + provide: MatPaginatorIntl, + deps: [[new Optional(), new SkipSelf(), MatPaginatorIntl]], + useFactory: MAT_PAGINATOR_INTL_PROVIDER_FACTORY +}; diff --git a/src/lib/paginator/paginator-module.ts b/src/lib/paginator/paginator-module.ts index 25eb8f645508..e0b7fd4463ed 100644 --- a/src/lib/paginator/paginator-module.ts +++ b/src/lib/paginator/paginator-module.ts @@ -12,7 +12,7 @@ import {MatButtonModule} from '@angular/material/button'; import {MatSelectModule} from '@angular/material/select'; import {MatTooltipModule} from '@angular/material/tooltip'; import {MatPaginator} from './paginator'; -import {MatPaginatorIntl} from './paginator-intl'; +import {MAT_PAGINATOR_INTL_PROVIDER} from './paginator-intl'; @NgModule({ @@ -24,6 +24,6 @@ import {MatPaginatorIntl} from './paginator-intl'; ], exports: [MatPaginator], declarations: [MatPaginator], - providers: [MatPaginatorIntl], + providers: [MAT_PAGINATOR_INTL_PROVIDER], }) export class MatPaginatorModule {}