这个
?
登录错误,如
Can't resolve all parameters for class_1: (?)
意味着Angular无法解析传递给构造函数的参数类型。换句话说,reflector无法识别这一点
private fb: FormBuilder
参数有
FormBuilder
类型,因为类型在类型脚本编译后消失。
为了告诉TS编译器它应该保持这种类型,您需要用decorator将这个类定义重写为以下版本:
@Component({
template: template,
styles: [
`
label {
width: 128px;
margin: 0px 8px;
}
`
]
})
class tmpCmp {
constructor(private fb: FormBuilder) {}
}
Forked Stackblitz
这将被汇编为:
tmpCmp = __decorate([
core_1.Component({
template: template,
styles: [
`
label {
width: 128px;
margin: 0px 8px;
}
`
]
}),
__metadata("design:paramtypes", [typeof (_a = typeof forms_1.FormBuilder !== "undefined" && forms_1.FormBuilder) === "function" ? _a : Object])
], tmpCmp);
你能注意到的地方
__metadata("design:paramtypes"
负责向角反射器提供信息的部件。
还有其他解决方法。
静态参数
const tmpCmp = Component({
...
})(
class {
constructor(private fb: FormBuilder) {}
static parameters = [ FormBuilder ]
}
);
Forked Stackblitz
静态参数法
const tmpCmp = Component({
...
})(
class {
constructor(private fb: FormBuilder) {}
static ctorParameters = () => [{ type: FormBuilder} ]
}
);
Forked Stackblitz