角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

回到顶部