typescript - Angular 2 : Unable to retrieve list from array in Tour of Heroes tutorial

标签 typescript angular

我正在查看 Angular2 的英雄之旅教程,但无法获得数组中定义的英雄列表。虽然 ngFor 似乎可以正常工作,因为它显示了 10 个列出的项目(只是列表点),但是内容(id 和名称)丢失了。

这是我到目前为止的代码:

import {Component} from 'angular2/core';


interface Hero {
    id: number;
    name: string;
}

@Component({
    selector: 'my-app',
    template: `
    <h1>{{title}}</h1>
    <h2>My Heroes</h2>
    <ul>
        <li *ngFor="#hero of heroes">
            <span class="badge">{{hero.id}}</span> {{hero.name}}
        </li>

    </ul>
    <div><label>id: </label> {{hero.id}}</div>
    <div>
        <label>name: </label>
        <input [(ngModel)]="hero.name" placeholder="name"/>
    </div>
    `
})


export class AppComponent {
    public title = 'Tour of Heroes';
    public heroes = HEROES;
    public selectedHero: Hero;
}

var HEROES: Hero[] = [
    { "id": 11, "name": "Arrow" },
    { "id": 12, "name": "Flash" },
    { "id": 13, "name": "Chuck Norris" },
    { "id": 14, "name": "Hulk" },
    { "id": 15, "name": "Superman" },
    { "id": 16, "name": "Captain Canada" },
    { "id": 17, "name": "Iron Man" },
    { "id": 18, "name": "Ant Man" },
    { "id": 19, "name": "Silver Surfer" },
    { "id": 20, "name": "Batman" }
];

关于我可能在哪里搞砸了的任何建议?

最佳答案

模板第二部分的问题是 hero 对象未定义(因为它与循环中的 hero 不同)。您可以这样修复它:

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <ul>
        <li *ngFor="#hero of heroes" (click)="selectedHero = hero">
            <span class="badge">{{hero.id}}</span> {{hero.name}}
        </li>
    </ul>
    <div *ngIf="selectedHero">
        <div><label>id:</label> {{selectedHero.id}}</div>
        <div>
            <label>name: </label>
            <input [(ngModel)]="selectedHero.name" placeholder="name"/>
        </div>
    </div>
  `,
  directives: []
})
export class App {
    public heroes = HEROES;
    public selectedHero: Hero;
}

演示: http://plnkr.co/edit/4xivhl1wYTSsiof8QJu4?p=preview

关于typescript - Angular 2 : Unable to retrieve list from array in Tour of Heroes tutorial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35323917/

相关文章:

html - 使用 Angular2 将 HTML 页面存储在内存中

Angular 2 - ngFor 中的动态 "for"属性

javascript - 如何在 Ionic 2/Angular 2 的复选框中设置名称中带有括号的属性?

typescript - CallableContext 的导入是什么

javascript - 如何在 Typescript 中为枚举分配多个值?

typescript - 如何使用 Parcel Bundler 将 typescript 文件捆绑到单个 js 文件?

angular - Jasmin + karma : "Error: Unexpected value ' HttpClient' imported by the module 'DynamicTestModule' . 请添加@NgModule 注解。”

javascript - 如何正确显示 Klarna Pay Over Time 小部件?

angular - 在 Cypress 中关闭 Angular Material 对话框

typescript - DynamoDB 表查询 KeyConditionExpression 错误