我正在练习如何将数据绑定(bind)到 Angular Material 数据表,在绑定(bind)数据时,我在控制台中遇到了此错误。我搜索了多个论坛,但找不到问题的答案,因此请花一些时间并清除我的错误.提前致谢。
型号
export interface User {
name: string;
}
服务
import { Injectable } from '@angular/core';
import { User } from '../_models/userModel';
import { Observable } from 'rxjs/Observable';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class UsersListService {
private url = 'http://localhost:3000/api/users';
constructor(public http: HttpClient) { }
getUser():Observable<User[]> {
return this.http.get<User[]>(this.url);
}
}
组件
import { UsersListService } from './../_services/usersList.service';
import { Observable } from 'rxjs/Observable';
import { Component, OnInit } from '@angular/core';
import { Http } from '@angular/http';
import { MatTableDataSource, MatSort, MatSortable } from "@angular/material";
@Component({
selector: 'app-usersList',
templateUrl: './usersList.component.html',
styleUrls: ['./usersList.component.css']
})
export class UsersListComponent implements OnInit {
usersList = [];
displayedColumns= ["name"];
dataSource;
constructor(private UsersListService:UsersListService) {
/* this.usersData(); */
}
ngOnInit() {
this.UsersListService.getUser().subscribe( results => {
if(!results) {
return;
}
this.dataSource = new MatTableDataSource(results);
});
}
HTML
<mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<!-- Name Column -->
<ng-container matColumnDef="name">
<mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.name}} </mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>
错误
ERROR Error: StaticInjectorError(AppModule)[UsersListComponent -> UsersListService]:
StaticInjectorError(Platform: core)[UsersListComponent -> UsersListService]:
NullInjectorError: No provider for UsersListService!
at _NullInjector.get (core.js:1003)
at resolveToken (core.js:1301)
at tryResolveToken (core.js:1243)
at StaticInjector.get (core.js:1111)
at resolveToken (core.js:1301)
at tryResolveToken (core.js:1243)
at StaticInjector.get (core.js:1111)
at resolveNgModuleDep (core.js:10896)
at NgModuleRef_.get (core.js:12129)
at resolveDep (core.js:12619)
最佳答案
您需要将您的服务添加到您的 app.module 中显示提供商的部分
import { YourService } from "./the_location_of_your_service";
.
.
.
@NgModule({
declarations: [
AppComponent,
UserListComponent,
],
imports: [BrowserModule],
providers: [YourService],
bootstrap: [AppComponent]
})
export class AppModule {}
关于angular - StaticInjectorError AppModule UsersListComponent -> UsersListService Angular 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51996997/