Angular 中 ngOnInit() 的动态创建 class 字段
Dynamic creation class field on ngOnInit() in Angular
我尝试在 class 中动态创建变量来存储值并在 ngModel 和其他地方使用它。
我知道,我可以像这样给 ngOnInit() 中的变量赋值
export class Component implements OnInit{
name: string;
ngOnInit(){
this.name = 'John Doe';
}
}
但我遇到了一些问题 - 我从服务器 API 获取了我的字段,但不知道我获取了哪些项和多少项。我只能解析服务器响应并在获取后为新变量赋值。
我不能这样做(TS2540:无法分配给 'name' 因为它是常量或只读 属性。)
export class Component implements OnInit{
ngOnInit(){
name = 'John Doe';
}
}
如何在 ngOnInit() 或其他地方为我的 class 分配新字段? (我想我可以在构造函数中做到这一点,但文档说我不应该将它与对 API 的 Observable 调用和其他困难的事情一起使用)
您可以使用类似这样的东西来完成:
ngOnInit() {
this['prop'] = 'value';
}
这是一个 link 的工作示例:https://stackblitz.com/edit/dynamic-class-props
您可以将索引器添加到 class 以便能够使用任何 属性 名称而不会出现编译器错误:
export class Component {
[name: string]: any;
ngOnInit(){
this["name"] = 'John Doe';
this.nameaa = "dd"
}
}
不过你应该小心,这意味着你可以拼错 属性 个名字,编译器不会发出任何错误。
我尝试在 class 中动态创建变量来存储值并在 ngModel 和其他地方使用它。 我知道,我可以像这样给 ngOnInit() 中的变量赋值
export class Component implements OnInit{
name: string;
ngOnInit(){
this.name = 'John Doe';
}
}
但我遇到了一些问题 - 我从服务器 API 获取了我的字段,但不知道我获取了哪些项和多少项。我只能解析服务器响应并在获取后为新变量赋值。
我不能这样做(TS2540:无法分配给 'name' 因为它是常量或只读 属性。)
export class Component implements OnInit{
ngOnInit(){
name = 'John Doe';
}
}
如何在 ngOnInit() 或其他地方为我的 class 分配新字段? (我想我可以在构造函数中做到这一点,但文档说我不应该将它与对 API 的 Observable 调用和其他困难的事情一起使用)
您可以使用类似这样的东西来完成:
ngOnInit() {
this['prop'] = 'value';
}
这是一个 link 的工作示例:https://stackblitz.com/edit/dynamic-class-props
您可以将索引器添加到 class 以便能够使用任何 属性 名称而不会出现编译器错误:
export class Component {
[name: string]: any;
ngOnInit(){
this["name"] = 'John Doe';
this.nameaa = "dd"
}
}
不过你应该小心,这意味着你可以拼错 属性 个名字,编译器不会发出任何错误。