Angular2:狡猾地理解这种奇怪的行为

时间:2016-06-01 21:13:57

标签: angular

我有一个我在Angular2应用程序中使用的WidgetComponent。该应用程序实际上是两个不同的应用程序:桌面版(启动桌面)和移动版(启动 - 移动)。 WidgetComponent我已经在桌面版中成功使用,现在我正在研究移动版本,我想在移动版本中使用WidgetComponent。

但是,当我尝试在移动版本中使用此WidgetComponent时,我收到此错误:

  

browser_adapter.ts:78错误:未捕获(在承诺中):TypeError:无法读取null的属性'query'       at resolvePromise(zone.js:538)       在zone.js:515       在ZoneDelegate.invoke(zone.js:323)       at Object.NgZoneImpl.inner.inner.fork.onInvoke(ng_zone_impl.ts:67)       在ZoneDelegate.invoke(zone.js:322)       在Zone.run(zone.js:216)       在zone.js:571       在ZoneDelegate.invokeTask(zone.js:356)       at Object.NgZoneImpl.inner.inner.fork.onInvokeTask(ng_zone_impl.ts:56)       在ZoneDelegate.invokeTask(zone.js:355)

在应用的桌面版本中不会发生此错误。

所以我尝试了一个实验。我克隆了WidgetComponent,即创建了两个相同的版本 - 相同的代码和标记 - 如下所示:

app/shared/widget
       widget.html
       widget.component.ts
app/shared/widget2
       widget.html
       widget.component.ts

现在,在我的移动应用程序中,我按如下方式引用小部件组件:

import { Component } from "@angular/core";
import { WidgetComponent } from "./../../shared/widget2/widget.component";
// import { WidgetComponent } from "./../../shared/widget/widget.component";

@Component({
    directives: [WidgetComponent],
    selector: "some-component",
    templateUrl: "app/path/some.html"
})
export class SomeComponent {

    constructor() {}

}

IT工作!

但是,如果我执行以下操作,则不起作用:

import { Component } from "@angular/core";
    // import { WidgetComponent } from "./../../shared/widget2/widget.component";
    import { WidgetComponent } from "./../../shared/widget/widget.component";

    @Component({
        directives: [WidgetComponent],
        selector: "some-component",
        templateUrl: "app/path/some.html"
    })
    export class SomeComponent {

        constructor() {}

    }

我真的很困惑这里发生了什么。有什么想法吗?

0 个答案:

没有答案