私はangular2の公式チュートリアルに続き、「2.ヒーローエディタ」を作ろうとしています。 app.component.tsファイルには、HeroとAppComponentという2つのクラスがあります。なぜ角度2コンポーネントでクラスの順序が重要になるのですか?
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<h2>{{hero.name}} details!</h2>
<div><label>id: </label>{{hero.id}}</div>
<div>
<label>name: </label>
<input [(ngModel)]="hero.name" placeholder="name">
</div>
`
})
export class Hero {
id: number;
name: string;
}
export class AppComponent {
title = 'Tour of Heroes';
hero: Hero = {
id: 1,
name: 'Windstorm'
};
}
AppComponentはメンバータイプが 'Hero'クラスなので、HeroはAppComponentの前に宣言する必要があると考えました。 しかし、奇妙なエラーメッセージが以下のように表示されました。
EXCEPTION: No Directive annotation found on AppComponent
私がHeroクラスをAppComponentの次に移動したとき、それは機能します...そして、なぜ私はそれを知りません。 アドバイスをいただければ幸いです。ありがとう。
また、クラスは吊り上げられません。 @Component({selector: 'b'})class B {} 'これは、クラス名を使用していない場合、クラス名を' @Component({selector: 'a'、directives:[B]なぜなら 'B'は' directives'でまだ知られていないからです。これには 'directref:[forwardRef(()=> B)]'が必要です。それはちょうどあなたの質問のタイトルに関連しています。 @ sasxaはエラーメッセージの実際の回答をすでに提供しています。 –
はい。今私はクラスの順序が重要であることを知っています。追加情報ありがとう! –