diff --git a/src/lib/sort/sort-errors.ts b/src/lib/sort/sort-errors.ts index 5fb61c38ca34..bcbc82d8f4e4 100644 --- a/src/lib/sort/sort-errors.ts +++ b/src/lib/sort/sort-errors.ts @@ -20,3 +20,8 @@ export function getSortHeaderNotContainedWithinSortError(): Error { export function getSortHeaderMissingIdError(): Error { return Error(`MatSortHeader must be provided with a unique id.`); } + +/** @docs-private */ +export function getSortInvalidDirectionError(direction: string): Error { + return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`); +} diff --git a/src/lib/sort/sort-header.ts b/src/lib/sort/sort-header.ts index b516ee6f6649..5cf719da9017 100644 --- a/src/lib/sort/sort-header.ts +++ b/src/lib/sort/sort-header.ts @@ -126,6 +126,7 @@ export class MatSortHeader implements MatSortable { /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */ _isSorted() { - return this._sort.active == this.id && this._sort.direction; + return this._sort.active == this.id && + this._sort.direction === 'asc' || this._sort.direction === 'desc'; } } diff --git a/src/lib/sort/sort.spec.ts b/src/lib/sort/sort.spec.ts index 4bc46e516d45..59d3f8df9c8a 100644 --- a/src/lib/sort/sort.spec.ts +++ b/src/lib/sort/sort.spec.ts @@ -20,6 +20,7 @@ import { getSortDuplicateSortableIdError, getSortHeaderMissingIdError, getSortHeaderNotContainedWithinSortError, + getSortInvalidDirectionError, } from './sort-errors'; @@ -37,7 +38,8 @@ describe('MatSort', () => { MatTableMatSortApp, MatSortHeaderMissingMatSortApp, MatSortDuplicateMatSortableIdsApp, - MatSortableMissingIdApp + MatSortableMissingIdApp, + MatSortableInvalidDirection ], }).compileComponents(); })); @@ -136,6 +138,11 @@ describe('MatSort', () => { .toThrowError(wrappedErrorMessage(getSortHeaderMissingIdError())); }); + it('should throw an error if the provided direction is invalid', () => { + expect(() => TestBed.createComponent(MatSortableInvalidDirection).detectChanges()) + .toThrowError(wrappedErrorMessage(getSortInvalidDirectionError('ascending'))); + }); + it('should allow let MatSortable override the default sort parameters', () => { testSingleColumnSortDirectionSequence( fixture, ['asc', 'desc', '']); @@ -333,3 +340,13 @@ class MatSortDuplicateMatSortableIdsApp { } ` }) class MatSortableMissingIdApp { } + + +@Component({ + template: ` +