angular - 空注入(inject)器错误 : No provider for String

标签 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");

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

最佳答案

this 中所述问题,

@Component 装饰器告诉 angular 它不是一个普通的 typescript 类,而是一个 Angular 组件.

因此,要让它工作,您必须告诉它 string 是组件的 provider,因为它期望构造函数参数是一个提供者 (它要么在组件的 元数据 中声明,要么在模块中声明。

string 不会工作,因为它不是已知的 angular 2 提供程序(除非您创建名为 string 的服务)。

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

希望对您有所帮助:)

关于angular - 空注入(inject)器错误 : No provider for String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48105151/

相关文章:

javascript - (<任何>窗口).SomeLibrary.SomeMethod(arg1,arg2)?

angular - 如何在开发环境中更改 Angular 4 的本地主机名称以进行 ssl 测试?

javascript - 类型 'void' 不可分配给类型 'FormData'

node.js - typescript 和 Jest : Avoiding type errors on mocked functions

angular - Jasmine单元测试中MockService的UseValue导致测试失败

css - 基于子域在 Angular 应用程序上加载 css

angular - npm 相当于 yarn install 和 yarn webpack :build

TypeScript 将对象从具有可选属性的类型转换为不具有可选属性的类型

javascript - 如何在 Angular 运行时设置deployUrl

javascript - Angular 2 : Changing static parts of the view according to path