I have a normal Angular Material 2 DataTable with sort headers.
All sort are headers work fine. Except for the one with an object as value.
These doesn't sort at all. 

For example:

```html
 <!-- Project Column - This should sort!-->
    <ng-container matColumnDef="project.name">
      <mat-header-cell *matHeaderCellDef mat-sort-header> Project Name </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.project.name}} </mat-cell>
    </ng-container>

```

note the `element.project.name`

Here's the displayColumn config:

```
 displayedColumns = ['project.name', 'position', 'name', 'test', 'symbol'];

```

Changing `'project.name'` to `'project'` doesn't work nor `"project['name']"`

What am I missing? Is this even possible?

Here's a Stackblitz:
[Angular Material2 DataTable sort objects](https://stackblitz.com/edit/angular-rtw2fx)

**Edit:**
Thanks for all your answers.
I've already got it working with dynamic data. So I don't have to add a switch statement for every new nested property.

Here's my solution: (Creating a new DataSource which extends MatTableDataSource is not necessary)

```js
export class NestedObjectsDataSource extends MatTableDataSource<MyObjectType> {

  sortingDataAccessor: ((data: WorkingHours, sortHeaderId: string) => string | number) =
    (data: WorkingHours, sortHeaderId: string): string | number => {
      let value = null;
      if (sortHeaderId.indexOf('.') !== -1) {
        const ids = sortHeaderId.split('.');
        value = data[ids[0]][ids[1]];
      } else {
        value = data[sortHeaderId];
      }
      return _isNumberValue(value) ? Number(value) : value;
    }

  constructor() {
    super();
  }
}

```
['https://Stackoverflow.com/questions/48891174', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/7515302/']
Another alternative, that no one threw out here, flatten the column first...

```
yourData.map((d) => 
   d.flattenedName = d.project && d.project.name ? 
                     d.project.name : 
                     'Not Specified');

this.dataSource = new MatTableDataSource(yourData);

```

Just another alternative, pros and cons for each!
It's trying to sort by element['project.name']. Obviously element doesn't have such a property.

It should be easy to create a custom datasource that extends MatTableDatasource and supports sorting by nested object properties. Check out the examples in material.angular.io docs on using a custom source.