Я следую за официальным уроком angular2 и собираюсь сделать «2. The Hero Editor». В файле app.component.ts у меня есть два класса, Hero и AppComponent.Почему порядок классов имеет значение в угловом 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 имеет тип элемента класса «героя», я думал, герой должен объявлен перед AppComponent. Но тогда появилось странное сообщение об ошибке, как показано ниже.
EXCEPTION: No Directive annotation found on AppComponent
И когда я переместил класс Hero на следующий AppComponent, он работает ... и я не знаю почему. Любой совет будет оценен по достоинству. Благодарю.
Также классы не подняты. Если вы используете имя класса, например '@Component ({selector: 'a', директивы: [B]}) класс A {} @Component ({selector: 'b'}) class B {}' это не будет потому что 'B' еще не известен в' директивах', потому что он объявлен ниже. Для этого потребовались бы 'директивы: [forwardRef (() => B)]'. Это просто связано с названием вашего вопроса. @sasxa уже предоставил фактический ответ на ваше сообщение об ошибке. –
Да. теперь я знаю, что последовательность классов важна. Благодарим вас за дополнительную информацию! –