Angular 2 HTTP(英雄之旅教程 - 角度网站)

时间:2016-11-11 20:30:10

标签: http angular typescript error-handling

遵循以下教程:https://angular.io/docs/ts/latest/tutorial/toh-pt6.html

当前代码:https://github.com/GreenAnts/Angular2-tour-of-heroes-tutorial

(注意:http必须正常,因为我能够查看英雄和仪表板,正在查看英雄......只有当我查看英雄细节时,这对我来说没有意义,因为我从未改变过我能想到的英雄细节方法。)

尝试查看英雄详情时的错误:

Errors When viewing hero-details

Collection app not found

我不知道它是什么,我认为它必须是一些简单的我可以忽略,但我真的无法弄明白,任何帮助都会受到赞赏,因为我被卡住了。

我正在教程中指出这一点:

  

更新英雄详情

     

我们可以在英雄详情视图中编辑英雄的名字。前进   并尝试一下。在我们输入时,英雄名称会在视图标题中更新。   但是当我们点击“后退”按钮时,更改就会丢失!

     

之前没有丢失更新,发生了什么?当应用程序使用了   模拟英雄列表,直接对英雄对象进行了更改   单个应用程序范围的共享列表。现在我们正在从中获取数据   服务器,如果我们想要保持更改,我们需要将它们写回来   到服务器。

起初我想也许是因为这个,但它说我们应该能够访问详细视图,所以我假设它是其他东西。

显示我可以访问其他组件的数据(没有错误):

enter image description here

1 个答案:

答案 0 :(得分:1)

事实证明要简单得多,我应该先看一下。卫生署!

您的baseHref为空。那是:

<base href="" />

应该是:

<base href="/" />

您可能想要修复的其他一些事项:

  • 在打包生产应用程序时,每个组件中的“moduleId:module.id”都会出现问题。
  • getHero方法的签名返回了多个英雄:Hero数组的承诺。我把它改为单个英雄的承诺(没有括号。)

目前:

getHero(id: number): Promise<Hero[]> {
    return this.getHeroes()
    .then(heroes => heroes.find(hero => hero.id === id))
}

应该是:

getHero(id: number): Promise<Hero> {
    return this.getHeroes()
    .then(heroes => heroes.find(hero => hero.id === id))
}
  • HTML和样式网址并不总是按照定义运行:

    templateUrl:'。/ template / app.component.html',

    styleUrls:['./styles/app.component.css']

预先挂起'app'就像这样:

templateUrl: 'app/templates/app.component.html',
styleUrls: ['app/styles/app.component.css']
  • 你的node_modules存储在Git中,它们被排除在你的.gitignore中,但我猜你在忽略文件之前已经提交了它。您可以安全地删除那些本地提交,因此它们不会存储在Git中,然后运行“npm install”以便在本地恢复它们。