gpt4 book ai didi

angular - 如何修复 Angular 2 `Uncaught (in promise): TypeError: Cannot read property ' query' of null`?

转载 作者:太空狗 更新时间:2023-10-29 17:01:10 26 4
gpt4 key购买 nike

我一直在使用 Angular 2 文档中的 Heroes 教程进行实验。但是,我已经到了我不明白这个错误发生了什么的地步:

未捕获( promise ):类型错误:无法读取 browser_adapter.ts:88 中的 null 属性“查询”

涉及的两个部分是 HeroDetailComponentHeroService

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 相关的代码。但是,我仍然遇到同样的错误。一切都编译正常,这是一个运行时错误。 HeroServiceRouteParams 在父组件中提供。

两个问题:

  1. 如何解决这个问题?
  2. 如何调试这类问题?

我倾向于认为这是 Angular 2 中的错误,但我不确定如何确保这不是我的错误。提前致谢。

更新:

  1. 我添加了临时修复代码(它避免了注入(inject),因此不是这个问题的解决方案,因为我希望注入(inject)正常工作)。

  2. This is a Plunker使用我正在尝试的代码的近似版本。我无法让它正常运行,但通过查看代码可能有助于诊断问题。

最佳答案

我看到以下问题:HeroComponent 依赖于 HeroDetailsComponent,但是 HeroDetailsComponentafterwardsapp/heroes/index.ts 文件。

有人报告了这种设置的问题 here

关于angular - 如何修复 Angular 2 `Uncaught (in promise): TypeError: Cannot read property ' query' of null`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com