Angular 绑定选择时无法读取未定义的属性“sourceAccount”-异常
我得到这个错误:Angular 绑定选择时无法读取未定义的属性“sourceAccount”-异常,angular,Angular,我得到这个错误: NewTransactionComponent.html:4 ERROR TypeError: Cannot read property 'sourceAccount' of undefined at Object.eval [as updateDirectives] (NewTransactionComponent.html:4) 当我尝试在html中绑定select时。基本上,将有两个选择在同一页填写相同的数据帐户。我想将每次选择的帐户传递给服务,但我收到上面的错
NewTransactionComponent.html:4 ERROR TypeError: Cannot read property 'sourceAccount' of undefined
at Object.eval [as updateDirectives] (NewTransactionComponent.html:4)
当我尝试在html中绑定select时。基本上,将有两个选择在同一页填写相同的数据帐户。我想将每次选择的帐户传递给服务,但我收到上面的错误信息
new-transaction.component.html
<div>
<div>
<label>Source Account</label>
<select [(ngModel)]="transaction.sourceAccount.id">
<option *ngFor="let a of accounts" [value]="a.id" >{{a.name}}</option>
</select>
</div>
<div>
<label>Source Account</label>
<select [(ngModel)]="transaction.targetAccount.id" >
<option *ngFor="let a of accounts" [value]="a.id">{{a.name}}</option>
</select>
</div>
<div>
<input type="text" [(ngModel)]="transaction.amount">
</div>
<div>
<button (click)="addTransaction()">Add</button>
</div>
</div>
我的模型:
交易记录
import { Account } from "./account";
export class Transaction {
idtransaction: number;
amount: number;
sourceAccount: Account;
targetAccount: Account;
constructor(values: Object = {}) {
Object.assign(this, values);
}
}
account.ts
import { User } from "./user";
export class Account {
id: number;
name: string = '';
user: User[] = [];
constructor(values: Object = {}) {
Object.assign(this, values);
}
}
****编辑
export class NewTransactionComponent implements OnInit {
accounts: Account[];
transaction: Transaction = new Transaction;
constructor(private accountService: AccountService, private transactionService: TransactionService) { }
ngOnInit(): void {
this.accountService
.getAllAccounts()
.subscribe(
(accounts) => {
this.accounts = accounts;
}
);
}
addTransaction(): void {
this.transactionService.addTransaction(this.transaction);
//this.router.navigate(['/home']);
}
}
在设置[ngModel]之前,至少需要一个空的事务对象。否则事务将无法定义。您是对的,我错过了…=新事务,但仍不工作。我收到错误TypeError:无法读取未定义的属性“id”。基于上面的类,您是否发现了任何错误?再次,您需要将targetAccount设置为空对象。请您进一步说明?尚未完成事务:事务=新事务;在我班上最好?是的!在事务内部,您有一个对象targetAccount,该对象应初始化为空对象,否则您有一个未定义的targetAccount。因此,在该事务处理之后,您将获得未定义的错误id。targetAccount=新帐户;应该有用
export class NewTransactionComponent implements OnInit {
accounts: Account[];
transaction: Transaction = new Transaction;
constructor(private accountService: AccountService, private transactionService: TransactionService) { }
ngOnInit(): void {
this.accountService
.getAllAccounts()
.subscribe(
(accounts) => {
this.accounts = accounts;
}
);
}
addTransaction(): void {
this.transactionService.addTransaction(this.transaction);
//this.router.navigate(['/home']);
}
}