gpt4 book ai didi

javascript - Angular 9 :core. js:6228 错误类型错误:无法读取未定义的属性 'name'

转载 作者:行者123 更新时间:2023-12-01 21:35:19 24 4
gpt4 key购买 nike

我正在开发一个 Dapp。我在前端使用 Angular 9。
我收到此错误:错误类型错误:无法读取未定义的属性“名称”。
我的代码是
应用程序组件.ts

import { Component, OnInit } from '@angular/core';
import * as Donation from '../../Donation.json';
import { TypeDon } from './interfaces/TypeDon.js';
'use strict';
var Web3 = require('web3');
var DonationABI = Donation.abi;

const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:22000'));
const donationContract = new web3.eth.Contract(DonationABI, '0xd0a5685a4ba479D0FF4E86Ca8300738573816c63');
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
ngOnInit(): void {
this.getAllTypes();
}
title = 'donationApp';

typeDons : TypeDon[]=[];
getAllTypes(){
donationContract.handleRevert=true;
donationContract.methods.getAllTypeDon().call(function(error, result){
console.log("resultat :" + result);
if(!error){
if(result!=null) {
this.typeDons=result;
}
}
} else if(error)
{ console.log("error :" + error);}
});
}
}

app.component.html

<div style="text-align:center">
<h1>
Liste des donations :{{typeDons.length}}
</h1>
</div>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Action</th>
</tr>
</thead>
<tbody>

<tr ngFor="let item of typeDons">
<td>{{ item.name }}</td>
<td>{{ item.description }}</td>
<td>
<button type="button" >Edit</button>
<button type="button" >Delete</button>
</td>
</tr>
</tbody>
</table>

应用程序模块.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

@NgModule({
declarations: [
AppComponent,
],
imports: [
FormsModule,
AppRoutingModule,
BrowserModule,
HttpClientModule,

],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

我 console.log 表结果的内容,它包含数据。
我认为错误来自 html。
解决问题的任何想法

最佳答案

  1. 在使用function 关键字定义的回调中,this 关键字的含义表示函数的作用域。使用箭头函数来使用类成员变量。
getAllTypes() {
donationContract.handleRevert = true;
donationContract.methods.getAllTypeDon().call((error, result) => { // <-- use arrow function here
console.log("resultat :" + result);
if(!error) {
if(result!=null) {
this.typeDons=result;
}
} else {
console.log("error :" + error);
}
});
}
  1. 使用安全导航运算符 ?.在模板中检查对象是否已定义,然后再尝试访问它的属性。
<tr ngFor="let item of typeDons">
<td>{{ item?.name }}</td> <!-- notice the question mark -->
<td>{{ item?.description }}</td>
<td>
<button type="button" >Edit</button>
<button type="button" >Delete</button>
</td>
</tr>

关于javascript - Angular 9 :core. js:6228 错误类型错误:无法读取未定义的属性 'name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62053060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com