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"
    }
}

不过你应该小心,这意味着你可以拼错 属性 个名字,编译器不会发出任何错误。