NullInjectorError:没有String的提供者

时间:2018-01-04 23:38:13

标签: angular typescript

在我的类中向构造函数添加字符串参数后,我在浏览器中收到错误:

enter image description here

我的课程定义如下:

import { Component, OnInit } from '@angular/core';

import { MatrixComponent } from '../matrix/matrix.component';

@Component({
  selector: 'app-player',
  templateUrl: './player.component.html',
  styleUrls: ['./player.component.css']
})
export class PlayerComponent implements OnInit {
    private userName: string;

    constructor(private name: string) {
        this.userName = name;
        this.discovered = 0;
        this.matrix = new MatrixComponent();
    }

    ngOnInit() {
    }
}

我正在另一个类的构造函数中创建对象:

var player1 = new PlayerComponent("Me");

我认为可以在构造函数中传递参数吗?我的代码出了什么问题?

1 个答案:

答案 0 :(得分:4)

正如this问题中所述,

@Component装饰器告诉angular这不是正常typescript class,而是Angular Component

因此,要使其工作,您必须告诉string是组件的provider,因为它期望构造函数参数是提供者(在组件的{中声明) {1}}或在模块中)。

medata不起作用,因为它不是已知的角度2提供者(除非您创建名为string的服务)。

这解释了为什么我们可以在普通类中创建这些构造函数(string作为参数),但在角度组件中不允许这样做。

我希望这会有所帮助:)