I am trying to get Angular material table to work with an api call to my database I get the right data I just want to display with the new material table and for some reason this is not working as expected.
this is my main component
import { Component } from '@angular/core'; import {AosService} from './app.aos.service.component' import {QuoteModel} from './QuoteModel' import {DataSource} from '@angular/cdk'; @Component({ selector: 'app-aos', providers: [AosService], templateUrl: './app.aos.quoteQuery.component.html', styleUrls: ['./app.aos.quoteQuery.component.scss'] }) export class AOSAppComponent { displayedColumns = ['OrdNbr', 'sotypeid', 'user6', 'LUpd_DateTime', 'User3', 'crtd_user', 'S4Future01', 'SlsperID', 'TotMerch', 'CustOrdNbr']; DataSource; public datas; public hidData = true; constructor(private _aosService: AosService) { } getAosQuote(quote: string) { this._aosService.getQuoteQueryData(quote.toUpperCase()).subscribe(res => { this.hidData = false; this.DataSource = res.recordset; console.log(this.DataSource); }) } }
this is my service module making the call
import { Injectable } from '@angular/core'; import { Headers, Http, RequestOptions } from '@angular/http'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch'; import { Observable } from 'rxjs/Rx'; import {QuoteModel} from './QuoteModel' @Injectable() export class AosService { private headers = new Headers({ 'content-type': 'application/json', 'Accept': 'application/json' }); private options = new RequestOptions({ headers: this.headers }); private aosUrl = 'http://localhost:3001/api/query/' constructor(private http: Http) { } getQuoteQueryData(quote: string) { return this.http.get(this.aosUrl + quote, this.options) .map((res: any) => res.json()) .catch((error: Response) => [{ status: error }]); } }
I am getting data back in my console.log statement
this is my html
<app-aos-header></app-aos-header> <div class="container"> <div> <md-input-container class="aos-full-width"> <input type="search" (keyup.enter)="getAosQuote(quote.value)" #quote mdInput placeholder="Quote Number" required> </md-input-container> </div> <div> <button md-raised-button color="primary" (click)="getAosQuote(quote.value)" type="button">Search</button> </div> </div> <div [hidden]="hidData" class="example-container mat-elevation-z8"> <md-table #table [dataSource]="dataSource"> <ng-container cdkColumnDef="CustOrdNbr"> <md-header-cell *cdkHeaderCellDef> Customer Order Number </md-header-cell> <md-cell *cdkCellDef="let row"> {{row.CustOrdNbr}} </md-cell> </ng-container> <ng-container cdkColumnDef="LUpd_DateTime"> <md-header-cell *cdkHeaderCellDef> Last Update </md-header-cell> <md-cell *cdkCellDef="let row"> {{row.LUpd_DateTime}}% </md-cell> </ng-container> <ng-container cdkColumnDef="OrdNbr"> <md-header-cell *cdkHeaderCellDef> Order Number </md-header-cell> <md-cell *cdkCellDef="let row"> {{row.OrdNbr}} </md-cell> </ng-container> <ng-container cdkColumnDef="S4Future01"> <md-header-cell *cdkHeaderCellDef>Future</md-header-cell> <md-cell *cdkCellDef="let row">{{row.S4Future01}} </md-cell> </ng-container> <ng-container cdkColumnDef="SlsperID"> <md-header-cell *cdkHeaderCellDef>Sales person</md-header-cell> <md-cell *cdkCellDef="let row">{{row.SlsperID}} </md-cell> </ng-container> <ng-container cdkColumnDef="TotMerch"> <md-header-cell *cdkHeaderCellDef>Total Merchandise</md-header-cell> <md-cell *cdkCellDef="let row">{{row.TotMerch}} </md-cell> </ng-container> <ng-container cdkColumnDef="User3"> <md-header-cell *cdkHeaderCellDef>User 3</md-header-cell> <md-cell *cdkCellDef="let row">{{row.User3}} </md-cell> </ng-container> <ng-container cdkColumnDef="crtd_user"> <md-header-cell *cdkHeaderCellDef>crtd_user</md-header-cell> <md-cell *cdkCellDef="let row">{{row.crtd_user}} </md-cell> </ng-container> <ng-container cdkColumnDef="sotypeid"> <md-header-cell *cdkHeaderCellDef>SO Type</md-header-cell> <md-cell *cdkCellDef="let row">{{row.sotypeid}} </md-cell> </ng-container> <ng-container cdkColumnDef="user6"> <md-header-cell *cdkHeaderCellDef>user 6</md-header-cell> <md-cell *cdkCellDef="let row">{{row.user6}} </md-cell> </ng-container> <md-header-row *cdkHeaderRowDef="displayedColumns"></md-header-row> <md-row *cdkRowDef="let row; columns: displayedColumns;"></md-row> </md-table> </div>