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']);
  } 
}