0

我尝试在类中动态创建变量来存储值并在 ngModel 和其他地方使用它。我知道,我可以像这样为 ngOnInit() 中的变量赋值

export class Component implements OnInit{
   name: string;
   ngOnInit(){
       this.name = 'John Doe';
   }
}

但我有一些问题 - 我从服务器 API 获取我的字段,但不知道我得到了什么和多少项目。我只能在获取后解析服务器响应并为新变量赋值。

我不能这样做(TS2540:无法分配给“名称”,因为它是常量或只读属性。)

export class Component implements OnInit{
   ngOnInit(){
       name = 'John Doe';
   }
}

如何在 ngOnInit() 或其他地方为我的班级分配新字段?(我想我可以在构造函数中做到这一点,但文档说我不应该将它与对 API 的 Observable 调用和其他困难的事情一起使用)

4

2 回答 2

1

你可以使用这样的东西来实现这一点:

ngOnInit() {
  this['prop'] = 'value';
}

这是一个工作示例的链接:https ://stackblitz.com/edit/dynamic-class-props

于 2018-03-15T13:11:37.243 回答
1

您可以向类添加索引器,以便能够使用任何属性名称而不会出现编译器错误:

export class Component {
    [name: string]: any;
    ngOnInit(){
        this["name"] = 'John Doe';
        this.nameaa = "dd"
    }
}

不过,您应该小心,这意味着您可能会拼错属性名称,编译器不会发出任何错误。

于 2018-03-15T13:11:51.157 回答