微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复Angular 2`未捕获(承诺):TypeError:无法读取属性’query’为null`?

我一直在使用Angular 2文档中的英雄教程进行实验.不过,我已经来了一个问题,我不明白这个错误发生了什么:

未捕获(承诺):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与我正在尝试的代码的大致版本.我无法使其正常运行,但通过查看代码可能有助于诊断问题.

我看到以下问题:HeroComponent取决于HeroDetailsComponent,但是HeroDetailsComponent之后会在app / heroes / index.ts文件中导出.

有人报道这种设置here的问题

原文地址:https://www.jb51.cc/angularjs/140810.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐