在我的类中向构造函数添加字符串参数后,我在浏览器中收到错误:
我的课程定义如下:
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");
我认为可以在构造函数中传递参数吗?我的代码出了什么问题?
答案 0 :(得分:4)
正如this问题中所述,
@Component
装饰器告诉angular
这不是正常typescript class
,而是Angular Component
。
因此,要使其工作,您必须告诉string
是组件的provider
,因为它期望构造函数参数是提供者(在组件的{中声明) {1}}或在模块中)。
medata
不起作用,因为它不是已知的角度2提供者(除非您创建名为string
的服务)。
这解释了为什么我们可以在普通类中创建这些构造函数(string
作为参数),但在角度组件中不允许这样做。
我希望这会有所帮助:)