我一直在使用Angular 2文档中的英雄教程进行实验.不过,我已经来了一个问题,我不明白这个错误发生了什么:
原文链接:https://www.f2er.com/angularjs/140810.html未捕获(承诺):TypeError:无法在browser_adapter.ts中读取属性“查询”null:88.
这两件涉及到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注入的那个,然后我得到我之前提到的错误.
@Injectable() export class HeroService { getHeroes() { return HEROES; } getHero(id: number) { return new Hero(1,'Name','Power','AlterEgo'); } }
当我试图弄清楚发生了什么,我删除了所有与承诺相关的代码.但是,我仍然收到同样的错误.一切都是编译好的,这是一个运行时错误. HeroService和RouteParams在父组件中提供.
两个问题:
>如何解决这个问题?
>如何调试这种问题?
我倾向于认为这是角色2中的错误,但我不知道如何确保这不是我的错误.提前致谢.
更新:
>我添加了临时修复代码(避免注入,因此不是解决这个问题的方法,因为我想使注射工作正常).
> This is a Plunker与我正在尝试的代码的大致版本.我无法使其正常运行,但通过查看代码可能有助于诊断问题.