Iv'eは最近新しいプロジェクトを開始し、Angular 2にチャンスを与えることに決めました。 元のバックボーン開発者として、私は今、私に本当に新しい仕事の種類に直面しています。生徒のリストを、私はクラスの部屋のオブジェクトを持つようにしたい、とその中: Angular2ネストされたコンポーネントとテンプレート階層
は、私は非常にシンプルなアプリを構築しようとしています。 私の見解では、それぞれ(教室、学生)はそれぞれのコンポーネントがそれ自身のテンプレートを持つように異なるコンポーネントでなければなりません。は、私は完全に分離したテンプレートを持つことを望む、と教室のテンプレート上の学生をループすると、学生のテンプレートをレンダリングします。
例: 私の教室コンポーネントは次のようになります: {Component、OnInit} from '@ angular/core'; {app/student.component 'から{Student}をインポートします。
@Component({
selector : 'classroom',
templateUrl : 'app/classroom.component.html',
directives : [Classroom]
})
export class MainContainer implements OnInit {
students : Student[]; // assume I have an array of students here
constructor() {}
}
教室テンプレートはなります
<div>
<student *ngFor="let student of students"></student>
</div>
学生コンポーネント:
import {Component, Input, Output} from '@angular/core';
@Component({
selector : 'student',
templateUrl : 'build/component/main-box/student.component.html'
})
export class Student {
name : string;
id: number;
grade:number;
constructor() {
}
};
と学生テンプレート、のように簡単:
<div>
name : {{name}}
id : {{id}}
grade : {{grade}}
</div>
しかし、上記コードは私に何も表示されません。 生徒データが生徒オブジェクトに渡されていないようです。ダウンオブジェクト全体を渡されたいくつかの例を見て Iv'e、この方法は:
[student]="student"
しかしそれは本当に間違って感じています。たとえば、Backboneでは、親ビューをレンダリングし、その内部にすべての子ビューを追加します。 ここでそれは奇妙に感じます。
もう1つの解決策は、生徒のテンプレートを別のファイルに保持するのではなく、単に教室のテンプレートに追加することです。 私は、これらのコンポーネントが同じファイルで一緒に生きていけないと信じているので、私は本当にこのプラクティスが気に入らないと言わなければなりません。
もう1つのこと、何をdoest @Input()
の略ですか?私は実際に文書からなぜ@Input()
がデータにアクセスするのか理解できませんでした。この時点で
私はないよりも混乱しています:]私は実際にいくつかのヒントやご意見を感謝し、そのようなタスクをdeallingためのいくつかの優れた実践を学ぶでしょう。
ありがとうございます!
偉大な、それは動作しますが、それを行うための他の方法はありますか?私はちょうど興味があります – superuser123
あなたの答えをありがとう、私は明日まで、より多くの意見を聞くために明日まで開いておきます、そして来る場合それを承認します:) – superuser123
@ superuser123あなたが'ngFor'ディレクティブの' student'変数はスコープ内にあり、プロパティなしで直接使用できます。それ以外に、私が考えることができるのは、無意味な渦巻きになるさまざまな方法です。 – Douglas