更改另一个 class' 实例的 class
Change the class of another class' instance
我有一个 Angular 4 Typescript 应用程序,它有多种类型的对象,这些对象由 类 定义,具有不同的类型属性,如下所示:
export class Fruit {
name: string;
type: string;
constructor(columnName: string) {
this.name = columnName;
}
}
export class Apple extends Fruit {
/* additional properties */
constructor(name: string) {
super(name);
}
get type(): string {
return 'apple';
}
}
export class Orange extends Fruit {
/* additional properties different from Apple */
constructor(name: string) {
super(name);
}
get type(): string {
return 'Orange';
}
}
这些对象属于数组成员中的篮子对象,就像篮子里的水果。我希望能够通过表单中的下拉菜单动态设置水果的种类。每次我这样做,我都会得到:
ERROR TypeError: Cannot set property type of [object Object] which has only a getter
我是 Typescript 的新手,我想我已经在做一些高级的事情了,但这是我正在做的项目所必需的。
编辑:
我使用 ng-formly 来生成我的表单元素。相关的 html 看起来像这样:
<form class="formly" role="form" [formGroup]="fruitBasket" novalidate>
<div formArrayName="fruits">
<div *ngFor="let control of fruitBasketForm.controls.fruits.controls; let i = index">
<formly-form
[model]="fruitBasket.fruits[i]"
[fields]="fruitFields[i]"
*ngIf="i === currFruitIndex">
</formly-form>
</div>
</div>
</form>
在此示例中,您的超级 class 应该有一个 setter,因为您的 type
字段中存在名称冲突
export class Fruit {
name: string;
type: string;
constructor(columnName: string) {
this.name = columnName;
}
set type(type){
this.type = type;
}
}
但是继承的真正用途是每个对象都应该知道它们属于哪个 class 并在它们的 class 中使用该方法。如果您依赖于继承体系结构中的 type
属性,那么您并没有真正使用继承的全部功能。
我有一个 Angular 4 Typescript 应用程序,它有多种类型的对象,这些对象由 类 定义,具有不同的类型属性,如下所示:
export class Fruit {
name: string;
type: string;
constructor(columnName: string) {
this.name = columnName;
}
}
export class Apple extends Fruit {
/* additional properties */
constructor(name: string) {
super(name);
}
get type(): string {
return 'apple';
}
}
export class Orange extends Fruit {
/* additional properties different from Apple */
constructor(name: string) {
super(name);
}
get type(): string {
return 'Orange';
}
}
这些对象属于数组成员中的篮子对象,就像篮子里的水果。我希望能够通过表单中的下拉菜单动态设置水果的种类。每次我这样做,我都会得到:
ERROR TypeError: Cannot set property type of [object Object] which has only a getter
我是 Typescript 的新手,我想我已经在做一些高级的事情了,但这是我正在做的项目所必需的。
编辑:
我使用 ng-formly 来生成我的表单元素。相关的 html 看起来像这样:
<form class="formly" role="form" [formGroup]="fruitBasket" novalidate>
<div formArrayName="fruits">
<div *ngFor="let control of fruitBasketForm.controls.fruits.controls; let i = index">
<formly-form
[model]="fruitBasket.fruits[i]"
[fields]="fruitFields[i]"
*ngIf="i === currFruitIndex">
</formly-form>
</div>
</div>
</form>
在此示例中,您的超级 class 应该有一个 setter,因为您的 type
字段中存在名称冲突
export class Fruit {
name: string;
type: string;
constructor(columnName: string) {
this.name = columnName;
}
set type(type){
this.type = type;
}
}
但是继承的真正用途是每个对象都应该知道它们属于哪个 class 并在它们的 class 中使用该方法。如果您依赖于继承体系结构中的 type
属性,那么您并没有真正使用继承的全部功能。