Угловой тур по свойству ввода героев «не является известным свойством «ошибка

#angular #angular-tour-of-heroes

#angular #angular-tour-of-heroes

Вопрос:

Я выполнил шаги точно так, как описано в руководстве angular ‘Tour of Heroes’. Я не зашел слишком далеко, так как после добавления компонента функции «heroe-detail» я получаю следующую ошибку:

 fail: Microsoft.AspNetCore.SpaServices[0]
      src/app/heroes/heroes.component.html:12:18 - error NG8002: Can't bind to 'hero' since it isn't a known property of 'app-hero-detail'.
 

Удаление этого компонента функции из ‘heroes.component.html «возвращает приложение в рабочее состояние. Вот мое с добавленным функциональным компонентом:

 <h2>My Heroes</h2>

<ul class="heroes">
  <li
      *ngFor="let hero of heroes"
      (click)="onSelect(hero)"
      [class.selected]="hero === selectedHero">
    <span class="badge">{{hero.id}}</span> {{hero.name}}
  </li>
</ul>

<app-hero-detail [hero]="selectedHero"></app-hero-detail>
 

Мой «heroe-detail.component.html ‘:

 <div *ngIf="hero">

  <h2>{{hero.name | uppercase}} Details</h2>
  <div><span>id: </span>{{hero.id}}</div>
  <div>
    <label>
      name:
      <input [(ngModel)]="hero.name" placeholder="name" />
    </label>
  </div>

</div>
 

Мой ‘heroe-detail.component.ts’:

 import { Component, OnInit, Input } from '@angular/core';
import { Hero } from '../hero'

@Component({
  selector: 'app-heroe-detail',
  templateUrl: './heroe-detail.component.html',
  styleUrls: ['./heroe-detail.component.scss']
})
export class HeroeDetailComponent implements OnInit {

  @Input() hero: Hero | undefined;

  constructor() {
  }

  ngOnInit(): void {
  }

}
 

Мой «app.module.ts»:

 import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms'

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HeroesComponent } from './heroes/heroes.component';
import { HeroeDetailComponent } from './heroe-detail/heroe-detail.component';

@NgModule({
  declarations: [
    AppComponent,
    HeroesComponent,
    HeroeDetailComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
 

Мой ‘main.ts’:

 import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));
 

Вот исходный код приложения в его нерабочем состоянии на GitHub

Кто-нибудь сталкивался с этим или я упускаю что-то супер очевидное?

Комментарии:

1. Ваше написание неверно в селекторе app-heroe-component. («app-heroe-detail»). оно должно совпадать с тегом <app-hero-detail [герой]=»Выбранный герой»></app-hero-detail> . Так что да, я столкнулся с этим, и вы упускаете что-то очевидное.

2. Блин, спасибо, чувак. Я так и знал.

3. Обратите внимание, что в какой-то момент в руководстве намеренно возникают ошибки, поэтому не расстраивайтесь, если это не сработает. Поиск и устранение — это часть руководства (и программирования в целом), поэтому не стесняйтесь возиться с кодом и узнать, что на самом деле означают сообщения об ошибках