角5类型错误:this.tipp.isPersistent不是一个函数
做有什么问题没有。在登录到控制台时显示以下错误:角5类型错误:this.tipp.isPersistent不是一个函数
"Tipp: { "id":1,
{...}
}
ERROR TypeError: this.tipp.isPersistent is not a function" is shown.
第一个日志语句显示正确。但它似乎是一个问题,以评估 'this.tipp.isPersistent()':
@Component({ selector: 'tipp-eingabe',
templateUrl: './tipp-eingabe.component.html',
styleUrls: ['./tipp-eingabe.component.css'],
encapsulation: ViewEncapsulation.None
})
export class TippEingabeComponent implements OnChanges {
@Input() tipp: Tipp;
constructor() {
}
ngOnChanges(changes) {
console.log("Tipp: " + JSON.stringify(this.tipp));
console.log("Tipp-isPersistent: " + this.tipp.isPersistent());
}
}
export class Tipp {
id: number;
spieler: Spieler;
spiel: Spiel;
tippErgebnis: Spielstand;
aenderungsDatum: Date;
public isPersistent(): boolean {
return true;
};
}
通过下面的模板片断叫:
<div class="panel panel-default"> <div class="panel panel-body">
<div *ngFor="let spiel of spiele">
<div *ngIf="!isMatchCollapsed(spiel.id)">
<div *ngFor="let tipp of spiel.tipps" class="tippLine">
<tipp-eingabe [tipp]="tipp"></tipp-eingabe>
</div>
</div>
</div>
</div>
</div>
回答:
你应该只调用this.isPersistent()
console.log("Tipp-isPersistent: " + this.isPersistent());
回答:
它看起来像您正在创建与的属性的对象而不是创建Tipp
的新实例。这意味着您的对象具有Tipp
的属性,但不包括方法。
所以在通过TIPP到TippEingabeComponent你父组件,你应该创造Tipp
一个新的实例。
let tipp = new Tipp(// pass in params);
这意味着你需要更新你的蒂普类来接受参数
export class Tipp { id: number;
spieler: Spieler;
spiel: Spiel;
tippErgebnis: Spielstand;
aenderungsDatum: Date;
constructor(obj: {
id: number;
spieler: Spieler;
spiel: Spiel;
tippErgebnis: Spielstand;
aenderungsDatum: Date;
}){
this.id = obj.id;
this.spieler = obj.spieler;
this.spiel = obj.spiel;
this.tippErgebnis = obj.tippErgebnis;
this.aenderungsDatu = obj.aenderungsDatum;
}
public isPersistent(): boolean {
return true;
};
}
现在,当你TippEngabeComponent调用该方法isPersistent它将在TIPP存在,因为TIPP是蒂普类的一个实例。
回答:
ngOnChanges(changes) { console.log("Tipp changed: " + JSON.stringify(this.tipp));
console.log("this.tipp instanceof Tipp: " + (this.tipp instanceof Tipp));
console.log("Tipp wurde geändert: " + this.tipp.isPersistent());
}
再加些调试信息reults到:
Tipp changed: {"id":1, ..... } this.tipp instanceof Tipp: false
ERROR TypeError: this.tipp.isPersistent is not a function
由于日志输出称,TIPP是不是蒂普类的一个实例。但为什么不呢? 数据作为退出后端服务的复杂json树的一部分提供。我认为树的嵌入式叶子/节点的实例化是通过角度来处理的?
export class Spiel { id: number;
:
tipps: Tipp[];
}
这是错误的假设,即嵌入式“的窍门”由数据服务交付JSON被实例化作为“蒂普”类型为“桌游”类的定义声明?
{ "id": 1,
"tipps": [
{
"id": 1,
"spieler": {
"id": 2,
"spielerName": "Stumbe",
"email": "[email protected]",
"rolle": "Spieler"
},
"tippErgebnis": {
"toreTeam1": 1,
"toreTeam2": 2
},
"aenderungsDatum": "2017-12-27T10:08:15"
},
{
"id": 2,
"spieler": {
"id": 3,
"spielerName": "Aug",
"email": "[email protected]",
"rolle": "Admin"
},
"tippErgebnis": {
"toreTeam1": 1,
"toreTeam2": 1
},
"aenderungsDatum": "2017-12-27T10:08:15"
}
]
}
以上是 角5类型错误:this.tipp.isPersistent不是一个函数 的全部内容, 来源链接: utcz.com/qa/266482.html