私はAngular 2の簡単なCRUDアプリケーションを作成しようとしていますが、新しいレコードの追加については混乱しています。角度2のインターフェイスを使用して新しいレコードを追加する方法は?
多くのNg2チュートリアルでは、オブジェクト/レコードを表すためにInterfaceを使用しています。だから私は、次の
export interface Itodo {
todoId: number;
description: string;
}
としての私のTODO項目を宣言し、次の
のtodo-add.component.tsとしての私のアドコンポーネントで使用して初期化
import { Component } from '@angular/core';
import { Itodo } from './todo'
@Component({
moduleId: module.id,
templateUrl: "todo-add.component.html"
})
export class TodoAddComponent {
//todoModel: Itodo = { todoId : 5, description : "abc" }; <-- it works
//todoModel: todo; // for class component
todoModel: Itodo;
AddItem(): void {
console.log('in AddItem');
console.log(this.todoModel.description);
}
}
私のHTML
<div class="form-horizontal col-md-6">
<div class="form-group">
<label class='col-md-3'>Description:</label>
<div class='col-md-6'><input type="text" class="form-control" [(ngModel)]="todoModel.description"></div>
</div>
<div class='form-group'>
<div class='col-md-offset-3 col-md-9'><input type="button" class="btn btn-default" (click)="AddItem()" value="Add Todo Item" /></div>
</div>
</div>
ブラウザで次のエラーが表示されます
core.umd.js:3478 Error: Uncaught (in promise): Error: Error in http://localhost:57999/app/todo/todo-add.component.html:9:78 caused by: Cannot read property 'description' of undefined
TypeError: Cannot read property 'description' of undefined
「インターフェース」を「クラス」に変更した場合、すべてが罰金となります。または、モッククラスを使用してInterfaceを初期化する場合
todoModel: Itodo = { todoId : 5, description : "abc" }
これも機能します。しかし、他のチュートリアルのようにInterfaceをどのように使うことができるのか、そしてInterfaceを使ってどのようにinstatiateするのかを知りたい。
いくつかのstackoverflow投稿では、* ngIfを使用して未定義であるかどうかを検出することを提案していますが、* ngIfと[(ngModel)]を一緒に使用して3つの方法結合。
そして、私は同じcomponent/htmlファイルにcreate/editを組み合わせたくありません。私は別のファイルとルーティングにそれらを分離したい
- TODO /追加
- のtodo /編集/ 5
あなたたちはどのようにNG2で正しくインタフェースを使用する私を啓発するだろうか?ありがとう。
次に、Create/InsertアクティビティにInterfaceを使用できないということですか?私がインスタンス化している方法は間違っていて、Initの作成のためのデータはありませんか? – TTCG
本当に何を意味するのかわかりません...あなたのオブジェクトを 'Itodo '型の空のオブジェクトとしてインスタンス化した場合は、実際にインターフェイスを使用しています。 – Alex
...私はそれを更新する前に、おそらくあなたは私の最初の答えを見ましたか?私は自分自身と 'Itodo'の型にオブジェクトのインスタンスを更新しましたが、そのことについて申し訳ありません(属性を忘れていた)エラーが発生しました;) – Alex