angular - StaticInjectorError AppModule UsersListComponent -> UsersListService Angular 5

标签 angular angular-material

我正在练习如何将数据绑定(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/

相关文章:

javascript - Angular2/Ionic - 查找数组中的重复项并组织它们

angular - 将对象的部分属性中的值分配给该对象会导致类型错误

angular-material - 如何删除轮廓垫形式字段边界角半径

angularjs - 从 Angular Material 日期选择器中删除或更改日历图标

javascript - 如何导入 400 多个模块,并在我的 angular-cli 项目中迭代它们?

angular2-jwt : No provider for AuthConfig

angular - 使用 Cypress 更改 Angular Material 中的选项卡

forms - 在 Angular 中包装 FormControl (2+)

angularjs - mdInput 消息显示在无效消息元素 : 上调用的动画

angular - 错误 TS5023 : Unknown compiler option 'p'