Sou novo em desenvolvimento angular 5. Estou tentando desenvolver uma tabela de dados com material angular usando o exemplo fornecido aqui: " https://material.angular.io/components/table/examples ".
Estou recebendo um erro dizendo Can't bind to 'dataSource' since it isn't a known property of 'table'.
Por favor ajude.
angular
datatable
angular-material
Rahul Munjal
fonte
fonte
table
, basta usar<mat-table #table [dataSource]...>
mat-table
tag?Respostas:
Lembre-se de adicionar
MatTableModule
seuapp.module's imports
ieEm Angular 9+
Menor que Angular 9
fonte
import { MatTableModule } from '@angular/material/table';
funcionarObrigado @ Jota.Toledo, consegui a solução para a criação da minha mesa. Encontre o código de trabalho abaixo:
component.html
<mat-table #table [dataSource]="dataSource" matSort> <ng-container matColumnDef="{{column.id}}" *ngFor="let column of columnNames"> <mat-header-cell *matHeaderCellDef mat-sort-header> {{column.value}}</mat-header-cell> <mat-cell *matCellDef="let element"> {{element[column.id]}}</mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row> </mat-table>
component.ts
import { Component, OnInit, ViewChild } from '@angular/core'; import { MatTableDataSource, MatSort } from '@angular/material'; import { DataSource } from '@angular/cdk/table'; @Component({ selector: 'app-m', templateUrl: './m.component.html', styleUrls: ['./m.component.css'], }) export class MComponent implements OnInit { dataSource; displayedColumns = []; @ViewChild(MatSort) sort: MatSort; /** * Pre-defined columns list for user table */ columnNames = [{ id: 'position', value: 'No.', }, { id: 'name', value: 'Name', }, { id: 'weight', value: 'Weight', }, { id: 'symbol', value: 'Symbol', }]; ngOnInit() { this.displayedColumns = this.columnNames.map(x => x.id); this.createTable(); } createTable() { let tableArr: Element[] = [{ position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H' }, { position: 2, name: 'Helium', weight: 4.0026, symbol: 'He' }, { position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li' }, { position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be' }, { position: 5, name: 'Boron', weight: 10.811, symbol: 'B' }, { position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C' }, ]; this.dataSource = new MatTableDataSource(tableArr); this.dataSource.sort = this.sort; } } export interface Element { position: number, name: string, weight: number, symbol: string }
app.module.ts
fonte
Tive esse problema durante a execução
ng test
, então, para corrigi-lo, adicionei ao meuxyz.component.spec.ts
arquivo:import { MatTableModule } from '@angular/material';
E adicionado à
imports
seção emTestBed.configureTestingModule({})
:fonte
se você "importar {MatTableModule} de '@ angular / material';" está em um módulo compartilhado, certifique-se de exportá-lo.
sharedmodule.ts:
em seguida, em seu módulo personalizado, onde você define o componente que usa a mesa de materiais:
custommodule.ts:
fonte
Para Angular 7
Verifique onde está localizado o seu componente de tabela. No meu caso, ele estava localizado como app / shared / tablecomponent onde a pasta compartilhada contém todos os subcomponentes. Mas eu estava importando o módulo de material em Ngmodules de app.module.ts que estava incorreto. Neste caso, o módulo de material deve ser importado em Ngmodules de shared.module.ts E funciona.
NÃO HÁ NECESSIDADE de alterar 'mesa' para 'mesa de tapete' no angular 7.
Angular7 - Não é possível vincular a 'dataSource', pois não é uma propriedade conhecida de 'mat-table'
fonte
O exemplo de material está usando as tags de tabela erradas. mudança
para
fonte
Eu também estava quebrando minha cabeça por um longo tempo com esta mensagem de erro e depois identifiquei que estava usando [fonte de dados] em vez de [fonte de dados].
fonte
O problema é sua versão de material angular, tenho a mesma, e resolvi isso quando instalei a versão boa de material angular no local.
Espero que resolva o seu também.
fonte
Lembre-se de importar o módulo MatTableModule e remover o elemento da tabela mostrado abaixo para referência.
implementação errada implementação
<table mat-table [dataSource]=”myDataArray”> ... </table>
correta:
<mat-table [dataSource]="myDataArray"> </mat-table>
fonte
Por favor, veja que seu dataSource varibale não obtém os dados do servidor ou dataSource não está atribuído ao formato de dados esperado.
fonte