- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在使用 Angular 2 文档中的 Heroes 教程进行实验。但是,我已经到了我不明白这个错误发生了什么的地步:
未捕获( promise ):类型错误:无法读取
。browser_adapter.ts:88
中的 null 属性“查询”
涉及的两个部分是 HeroDetailComponent
和 HeroService
。
import { Component, OnInit } from '@angular/core';
import { RouteParams } from '@angular/router-deprecated';
import { Hero, HeroService } from '../index';
@Component({
selector: 'my-hero-detail',
templateUrl: ...
styleUrls: [...]
})
export class HeroDetailComponent implements OnInit {
hero: Hero;
// TEMPORARY FIX:
_heroService = new HeroService(); // Avoids injection
// constructor(private _heroService: HeroService,
// private _routeParams: RouteParams) {}
constructor(private _routeParams: RouteParams) {}
ngOnInit() {
let id = +this._routeParams.get('id');
console.log(id);
}
}
当我使用这段代码时,它起作用了。但是当我切换构造函数,并使用带有 HeroService
注入(inject)的构造函数时,我得到了我之前提到的错误。
@Injectable()
export class HeroService {
getHeroes() {
return HEROES;
}
getHero(id: number) {
return new Hero(1, 'Name', 'Power', 'AlterEgo');
}
}
当我试图弄清楚发生了什么时,我删除了所有与 promise 相关的代码。但是,我仍然遇到同样的错误。一切都编译正常,这是一个运行时错误。 HeroService
和 RouteParams
在父组件中提供。
两个问题:
我倾向于认为这是 Angular 2 中的错误,但我不确定如何确保这不是我的错误。提前致谢。
更新:
我添加了临时修复代码(它避免了注入(inject),因此不是这个问题的解决方案,因为我希望注入(inject)正常工作)。
This is a Plunker使用我正在尝试的代码的近似版本。我无法让它正常运行,但通过查看代码可能有助于诊断问题。
最佳答案
我看到以下问题:HeroComponent
依赖于 HeroDetailsComponent
,但是 HeroDetailsComponent
是 afterwards 在 app/heroes/index.ts
文件。
有人报告了这种设置的问题 here
关于angular - 如何修复 Angular 2 `Uncaught (in promise): TypeError: Cannot read property ' query' of null`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105614/
我是一名优秀的程序员,十分优秀!